- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
可悲的是,this问题从未得到回答..
我正在尝试使用 ASSIMP 加载模型的 .X 文件 [或任何其他]。
这是我尝试使用的代码:
LPDIRECT3DVERTEXBUFFER9 vbuf;
IDirect3DDevice9* dev;
Assimp::Importer imp;
aiMesh* mm1;
struct CUSTOMVERTEX {
float x,y,z;
D3DVECTOR normal;
float tx,ty;
};
#define CUSTOMFVF (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)
void loadtextures() {
const aiScene* sc=imp.ReadFile("model1.x",aiProcess_Triangulate | aiProcess_ConvertToLeftHanded | aiProcess_ValidateDataStructure | aiProcess_FindInvalidData);
if (!sc) {
MessageBox(NULL,"critical error in loading model file. see next dialog for errcode.",0,0);
crash((char*) imp.GetErrorString());
}
if (!sc->HasMeshes()) {
crash("failed to load model, meshes missing");
}
mm1=sc->mMeshes[0];
if (!mm1) crash("no model found in file.");
ZeroMemory(&vbuf,sizeof(vbuf));
dev->CreateVertexBuffer(mm1->mNumVertices*sizeof(CUSTOMVERTEX),0,CUSTOMFVF,D3DPOOL_DEFAULT,&vbuf,NULL);
CUSTOMVERTEX* vptr[1024];
vbuf->Lock(0,0,(void**) &vptr,0);
for(unsigned int i=0;i<mm1->mNumVertices;i++) {
CUSTOMVERTEX* c=new CUSTOMVERTEX;
c->x=mm1->mVertices[i].x; // after debugging, x,y,z are all 0.
c->y=mm1->mVertices[i].y;
c->z=mm1->mVertices[i].z;
if (mm1->HasTextureCoords(i)) {
c->tx=mm1->mTextureCoords[i]->x;
c->ty=mm1->mTextureCoords[i]->y;
} else c->tx=c->ty=0;
if (mm1->HasNormals()) {
c->normal=D3DXVECTOR3(mm1->mNormals[i].x,mm1->mNormals[i].y,mm1->mNormals[i].z);
}
vptr[i]=c;
}
vbuf->Unlock();
}
void draw_frame(HWND hwnd) {
static float cr=0;cr+=0.01f;
D3DXMATRIX mat_translate,mat_viewport,mat_projection,mat_roty,mat_rotx,mat_rotz;
D3DXMatrixLookAtLH(&mat_viewport,&D3DXVECTOR3(0,0,-20),&D3DXVECTOR3(0,0,0),&D3DXVECTOR3(0,1,0));
D3DXMatrixPerspectiveFovLH(&mat_projection,fov,(float) SCRW / (float) SCRH,1,100);
D3DXMatrixRotationY(&mat_roty,roty);
D3DXMatrixRotationX(&mat_rotx,rotx);
mat_translate=mat_rotx*mat_roty;
dev->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1,0);
dev->Clear(0, NULL, D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
dev->BeginScene();
dev->SetFVF(CUSTOMFVF);
dev->SetTransform(D3DTS_WORLD,&mat_translate);
dev->SetTransform(D3DTS_VIEW,&mat_viewport);
dev->SetTransform(D3DTS_PROJECTION,&mat_projection);
dev->SetStreamSource(0,vbuf,0,sizeof(CUSTOMVERTEX));
HRESULT f=dev->DrawPrimitive(D3DPT_TRIANGLELIST,0,mm1->mNumFaces);
if (FAILED(f)) {
crash("failed to draw vertex buffer.",f);
}
dev->EndScene();
dev->Present(NULL,NULL,NULL,NULL);
}
没有DirectX错误,模型不显示。
最佳答案
我使用 Assimp 成功地将任何网格格式加载到我的 directx9 应用程序中。如果您仍然坚持这一点,请告诉我。
现在,我只能在没有任何纹理的情况下加载第 0 个索引处的网格。处理其余的事情......让我知道:)
关于c++ - ASSIMP 网格与 directx9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602484/
我尝试加载 gltf 格式的场景。它具有金属和粗糙纹理(未嵌入)。现在我想使用 Assimp 加载具有指定纹理的模型。我使用 GetTexture() 检索纹理,但 aiTextureType 没有粗
我已经从 http://assimp.sourceforge.net/main_downloads.html 下载了 Assimp 项目 Assimp release image assimp zip
assimp 库提供了一种从文件加载 3D .obj 模型的好方法。但是我发现它附带的 assimp_viewer.exe(我使用 3.1.1 版)在导入我的 .obj 文件(42Mb,已经简化)时比
我正在使用 Assimp 将 3D 模型加载到我的程序中。到目前为止,一切都很顺利,除了我遇到了一个似乎没有意义的 Lightwave 对象。当然它在 Lightwave 中渲染得很好,但在 Assi
最近我在做骨骼动画导入,所以我用一些IK技术制作了一个类似Minecraft的3d模型来测试Assimp动画导入。输出格式为 COLLADA(*.dae),我使用的工具是 Blender。在编程方面,
导入网格物体时,我得到了 Material ,但是无法访问纹理的文件名。 .mtl文件显式显示纹理的文件名。在代码中,它的纹理计数为1,但文件名字段显示为空字符串,fullPath输出为“* 0”。在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
过去几天我一直在尝试使用 assimp 加载我的蒙皮 collada 网格,但我遇到了非常困难的时间。目前我只是试图在没有任何变换或动画的情况下以其正常的“姿势”渲染它,但网格变得非常变形。我认为问题
我正在尝试使用 Assimp(Open Asset Import Library)制作骨骼动画。现在我可以成功加载 .dae 模型并用动画渲染它,但在这样做的过程中模型变得困惑。 http://i.i
我刚刚下载了 assimp 3.0 库并使用 cmake 构建了所需的 make 文件,然后编译并构建了库本身,这个过程是成功的(对 StepFile.h 稍作修改), 我的 assimp 头文件夹位
我刚拿到最后一个assimp SDK,做了一个项目,我正确地链接了它(链接没有错误)但是我似乎在Sample项目上遇到了一些麻烦。更具体地说,是 SimpleOpenGL。我将 C++ 与 OpenG
我正在使用 Assimp 加载我的模型和网格,到目前为止它一直运行良好。我正在尝试从从 blender 导出 .obj 文件时生成的 .mtl 文件加载发射贴图。它加载漫反射贴图、法线贴图和镜面反射贴
我目前正在使用 ASSIMP 库将骨骼动画实现到我的 3D OpenGL 游戏引擎中,不幸的是它并没有那么好。我目前面临的问题是,串联的骨骼变换(骨骼之间的父子关系)只有在只有一个父级被变换时才能正确
我已经使用 Assimp 一段时间了,现在我正在尝试加载一个 .obj 文件。它加载完美,但我想在加载后操作面部数据。 基本上我在简单的 cube.obj 文件中有这个(完整文件 - http://p
我正在做一个项目,我使用 ASSIMP 库导入一个化身的 3D 网格,更新它并使用同一个 ASSIMP 库再次导出更新后的场景。为此,作为第一步,我编写了一段代码来导入场景,并且在不做任何更改的情况下
我正在使用 assimp 在我的游戏引擎中导入 3d 模型。出于某种原因,无论我使用什么模型或模型格式,assimp 都不会报告任何纹理。这是为什么? 以下是使用 assimp 的非常简单的设置: c
我正在使用 Assimp 加载 COLLADA 模型,但是 scene->mMeshes[i]->mName.C_Str() 调用为我返回 "" existing mesh index(当然,"" 不
我最近通过 valgrind 对我的游戏引擎进行了内存泄漏测试;它实际上告诉我,在我的 Mesh 类中有大约 7000 个字节被泄露;奇怪的是它告诉我这个: 7,280 bytes in 1 bloc
我在 Windows 上安装了 Assimp 库,并且喜欢这些文件,然后只是复制粘贴 SimpleOpenGL 示例并删除了结构词(其中大部分)以清除我得到的错误。 现在,我没有任何错误,但是每当我尝
我正在使用 Assimp.net 将动画 .dae 文件导入我的 OpenTK 引擎并努力建立可用的分层骨骼结构。 在 tutorial我正在关注,根骨骼或“关节”包含它的子关节列表,以及它们的子关节
我是一名优秀的程序员,十分优秀!