我需要构建一个类似于 DirectX SDK 附带的 Tiny.sdkmesh 的 sdkmesh 文件。
我有网格文件 base.obj
我在 textures/base.jpg
我正在使用以下命令行运行 meshconvert.exe
meshconvert.exe base.obj -n -op -tb
它生成了一个base.sdkmesh
但是没有纹理文件
我尝试使用 paint.net 将 jpeg
纹理保存为 dds
文件
当我渲染我的模型时,它全黑了。但是当我渲染 tiny.sdkmesh
模型时,它出现了纹理。
有人可以帮助解释这个未记录的工具和过程吗?
谢谢,
最佳答案
meshconvert
的最新版本是 DirectXMesh 的一部分, 所以除非你特别需要旧的 .X 文件支持(你不需要,因为你使用的是 Wavefront OBJ)你应该使用那个而不是 legacy DirectX SDK .
meshconvert
的默认行为是从 Wavefront OBJ 的 mtl
文件中获取纹理文件名,并将它们嵌入为 .dds
版本相同的文件(因此 texture.jpg
存储为 texture.dds
)。您可以使用 DirectXTex 中的 texconv
工具生成 dds
项目。您还可以使用 -nodds
开关告诉最新的 meshconvert
保留文件名。
您还可以使用 DirectX SDK Samples Content Exporter 从 Autodesk FBX 文件创建 SDKMESH
文件.该导出器还将“烹制”纹理作为导出过程的一部分。
如果您有一个 sdkmesh
并且您正在尝试找出其中包含的纹理引用,请尝试使用 sdkmeshdump控制台实用程序以查看其中的内容。
Disclaimer:
SDKMESH
is really only intended as a learning format used in DirectX samples. You can use it in your project, but you will most likely want to develop your own runtime container format if your engine/project becomes sophisticated. It mostly has the value of existing, so YMMV.
参见 DirectXMesh wiki和 DirectX SDK Content Exporter wiki
If you are using DXUT, you should use the latest version from GitHub.
sdkmesh
is also supported by the DirectX Tool Kit for DX11 and DX12
关于c++ - 如何使用纹理和 MeshConvert.exe 构建 SdkMesh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711755/