2010-11-30 310 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()之後)。