2016-01-22 44 views
0

我有一個球體,我試圖在頂點着色器中將其頂點增加一個常量,但threeJS的默認屬性position不更新。ThreeJS不更新着色器中的頂點位置

uniform float extraSize; 

void main(void) { 
    vec3 newPosition = position + extraSize*normal; 
    gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0); 
} 

當我通過extraSize變量,球的變化,但positionmodel.geometry.vertices multipy它沒有它。

我已經在我的代碼model.geometry.verticesNeedUpdate = truemodelGeometry.dynamic = true

這是我的問題的一個示例代碼: fiddle example

+0

更改着色器中的頂點位置並不會在javascript對象中更改它 – 2pha

+0

有什麼方法可以修改着色器中頂點相對於其最後位置的方式嗎? –

+0

我不確定你的意思是「最後的位置」。比約克的回答更好地解釋了我的評論。 – 2pha

回答

0

着色器不淌回三出的基於JavaScript的頂點一覽表中會發生什麼。如果您想持續更改,則需要直接操作網格的geometry.vertices的成員。另外,雖然這可以縮放一個球體,但考慮如果沿着法線在一個更復雜的對象上縮放可能會發生什麼情況 - 您將在不同的方向上縮放,實質上會使形狀膨脹/縮小。也許這就是你想要的?

對於簡單的比例操作,使用網格比例法有什麼問題?

+0

我正在試圖做的是這樣的:[鏈接](https://jsfiddle.net/meji/qvkses95/),但永久性的變化。我試圖在着色器中做它,因爲它在JavaScript中是非常慢,但如果你說持久性改變我應該在javascript中操作'geometry.vertices',我不能在着色器中做:(。 –