【问题标题】:PI3D texturing an imported obj model as if it were an elevationmapPI3D 纹理导入的 obj 模型,就好像它是一个高程图
【发布时间】:2020-11-16 23:01:27
【问题描述】:

我正在尝试使用 pi3d 创建一个简单的火车模拟器,我需要为地图使用 obj 文件并应用纹理,但是当我运行“set_draw_details”并应用一些在高程图上可以正常工作的纹理时,我得到了一团糟。 (见下图)

我们的想法是只制作一个粗糙的草纹理效果,但它把它弄乱了,并且在许多三角形上仅在 1 个轴上拉伸纹理,从而创建了图像中看到的效果。 我想在整个模型上应用相同的纹理,因为材质颜色仍然会显示,所以它对于镇流器来说也是一个很好的纹理。

无论我为 set_draw_details 输入什么值,似乎都会产生相同的效果。

我不知道如何从搅拌机应用纹理,无论我从搅拌机导出时使用的任何设置都具有相同的效果(带/不带顶点法线,带/不带纹理 UV)

self.map = pi3d.Model(file_string="%s.obj"%name)
self.map.set_draw_details(shader=self.shader, textures=[self.mountimg1, self.mountimg1, self.bumpimg], ntiles=1.280, shiny=0.0, umult=1.0, vmult=1.0, bump_factor=1.0)

有谁知道为什么会发生这种情况以及如何解决它 - 我不太在意纹理点的大小,只要它们不是像现在这样的条纹。

【问题讨论】:

    标签: python python-3.x blender


    【解决方案1】:

    你解决了吗?它看起来是一个 UV 问题 - 如果你有指向 obj 文件的链接,我可以确定。

    您是否在搅拌机中生成了 UV 值,它们看起来是否合理?您需要切换到编辑模式(选项卡)然后选择所有顶点(A)然后打开 UV 菜单(U)然后选择合适的投影。如果您不先这样做,那么当您导出到 obj 时,您将无法获得用于映射纹理的合理值。

    在 pi3d 中,set_draw_details() 的 umult 和 vmult 参数将控制纹理在 u 和 v 的 0.0 到 1.0 范围内映射的次数。

    对不起,这个回复比较晚,也许它会帮助遇到这个问题的其他人。

    【讨论】:

      【解决方案2】:

      感谢@paddyg,这个答案正是我们所需要的——现在我只需要调整纹理vmult 和umult 的值直到它看起来正确,然后尝试不同的UV 映射值直到它起作用。

      请注意:Blender 中的“编辑”选项卡是窗口左上角的下拉菜单,默认值为“对象模式”,需要设置为“编辑模式” ,然后有3个按钮,需要选择'顶点选择'一个(按'a'选择所有顶点),然后按'u'打开UV菜单-见图。

      Blender 的用户界面:

      具有固定 UV 映射的火车模拟器游戏:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-15
        • 1970-01-01
        • 2019-04-26
        • 2015-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-26
        相关资源
        最近更新 更多