一些上下文:我正在动态生成一些基于瓦片的图形,方法是为每个瓦片创建一个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)