gpt4 book ai didi

graphics - Wavefront OBJ 格式 -> 组和 usemtl 命令

转载 作者:行者123 更新时间:2023-12-02 20:14:22 31 4
gpt4 key购买 nike

所以我正在为波前 obj 模型文件编写一个解析器,并且有一些不规则之处我不确定如何处理。

因此,根据我的阅读,可以使用“g”命令将网格体分成组,并且可以使用“usemtl”命令将 Material 分配给每个组

所以理想的文件应该是这样的:

g group1
usemtl material1
//vertices
//UV coords
//faces

g group2
usemtl material2
//vertices
//UV coords
//faces

etc....

但是,在我下载的一些 obj 文件(从 Turbosquid 等地方)中,我看到单个组包含多个“usemtl”,如下所示:

g group1
usemtl material1
//vertices, faces, etc
usemtl material2
//vertices, faces, etc

g group2
usematerial material3
//vertices, faces, etc
<小时/>

如果每个组可以有多种 Material ,那么组还有什么意义呢?

这些文件是否被视为“非标准”或已损坏?

我应该根据共享 Material 而不是共享组对面孔进行分组吗?

每组拥有多种 Material 会使我的很多代码变得复杂(例如 - 假设我必须在具有某种 Material 的一组三角形/面上生成一组 N 个随机样本。如果每组只有一种 Material 我可以只查找该组中的三角形并生成样本。但是,如果该组包含一些具有正确 Material 的三角形,而另一些则没有,我必须在组检查之上进行一些奇怪的 Material 检查以生成正确的样本.这只是一个例子 - 还有其他一些例子,这也成为一个问题)

最佳答案

对象网格不仅可以分组为组项 (g),还可以分组为对象 (o) 和平滑区域 (s)。最简单的方法是使面引用 usemtl 指定的当前 Material ,或者仅按 usemtl 分组

关于graphics - Wavefront OBJ 格式 -> 组和 usemtl 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582283/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com