2010-11-30 307 views
0

我有一个选择的网格(创造性地称为“选择”),我想在本地的空间内工作,所以我使用以下命令:如何在Blender中通过矩阵逆转变换?

tmesh = NMesh.GetRawFromObject(selected.name) 
    tmesh.transform(selected.matrix) 

我那么做了verticies一堆计算并删除它们通过索引,这很好。

当我尝试从vert.co对象列表中稍后添加它们时,什么都不起作用。他们最终被正确地定位在彼此之间,但不在原始顶点附近。

  for v in tmesh.verts: 
       toAdd.append(v.co) 
       mesh = selected.getData(mesh=1) 
       mesh.verts.extend(toAdd) 

我意识到这是因为对象是在不同的空间中。所以我认为我需要做的是将新的顶点转换回旧的空间......但我对这里到底发生了什么的理解充其量是模糊的。如何“撤消”tmesh.transform(selected.matrix)命令?

的我在做什么更thoroug的解释可以在这里找到:http://www.kellbot.com/2010/11/lego-plans-now-with-better-rendering/

+0

你可以在`tmesh.transform(selected.matrix)`在它的顶点上进行“一堆计算”之前离开吗?即在对象的空间中工作并避免该问题。 – martineau 2010-11-30 20:24:41

回答

1

我不熟悉的搅拌机specfically,但在文档快速浏览一下之后,但原则上它好像你应该能够使用invert()Matrix方法来获得selected.matrix的逆变换(可能在首先制作其copy()之后)。