如何更改GeomNode中特定Geom的纹理



一些上下文:我正在动态生成一些基于瓦片的图形,方法是为每个瓦片创建一个Geom(只包含几个tris(,然后将所有Geom组合到整个地图的单个GeomNode中。

根据panda3d文档,GeomNode的用途之一是能够更改单个Geoms的纹理。然而,它并没有解释如何做到这一点。

在Geom本身上调用set_texture不起作用(可能是因为RenderState在GeomNode中,而不是Geom中(。我可以用geom_node.get_geom_state(n)获得与第n个Geom对应的RenderState,并用geom_node.set_geom_state(n, state)再次设置它,但我不知道如何更改RenderState,使其应用纹理,从API引用来看,它看起来非常复杂。

如何更改GeomNode中单个Geom的纹理(如果答案是"将每个Geom放入自己的GeomNode",那么每个GeomNode有多个Geom的理由吗?(?

如果你仔细阅读文档,它会显示:

您不应该尝试直接创建或修改RenderState对象。相反,调用其中一个make((函数为您创建一个。创建一个新对象,而不是修改RenderState对象。

因此,要更新Geomn上的纹理,给定一些纹理texture和GeomNodenode,您需要执行以下操作:

attrib = TextureAttrib.make(texture)
state = RenderState.make(attrib)
node.set_geom_state(n, state)

相关内容

  • 没有找到相关文章

最新更新