2017-07-14 13 views
0

ジオメトリのz座標の頂点を変更していますが、メッシュが同じサイズのままであることがわかりました。しかし、頂点位置の間のトゥイーン処理は、X、Y空間では期待通りに機能します。Shader Z空間パースペクティブShaderMaterial BufferGeometry

私は私のレンダリング機能で振幅を均一にトゥイーンことで、私のgl_Positionを計算していますどのようにこれがある:私もwebglfundamentalsに計算する観点から、このような何かを試してみました

<script type="x-shader/x-vertex" id="vertexshader"> 

    uniform float amplitude; 
    uniform float direction; 
    uniform vec3 cameraPos; 
    uniform float time; 

    attribute vec3 tweenPosition; 

    varying vec2 vUv; 

    void main() { 

     vec3 pos = position; 
     vec3 morphed = vec3(0.0, 0.0, 0.0); 

     morphed += (tweenPosition - position) * amplitude; 

     morphed += pos; 

     vec4 mvPosition = modelViewMatrix * vec4(morphed * vec3(1, -1, 0), 1.0); 

     vUv = uv; 
     gl_Position = projectionMatrix * mvPosition; 

    } 

</script> 

vec4 newPos = projectionMatrix * mvPosition; 
float zToDivideBy = 1.0 + newPos.z * 1.0; 
gl_Position = vec4(newPos.xyz, zToDivideBy); 

この私がループしている間に別の頂点集合を計算します:

私はこれと同じ結果を得ます - Z-Spaceのさらに遠くにあるオブジェクトは、拡大/縮小しない/別のものを実行しません。何がありますか?モーフィング

+0

私は 'z'は、上記変化しない参照。 'z'を変更しているコードはどこですか?また、あなたの投影行列は何ですか? – gman

+0

質問が更新されました。投影行列は、PerspectiveCameraを使用している場合は、デフォルトでTHREEによって渡されているものです。読み込み:確かではありません... –

+2

'morphed * vec3(1、-1、0)'は、 '' morphed''が何であれ、乗算後に 'z'座標が0になることを意味します" – prisoner849

答えて

0

* vec3(1、-1、0)

zは、あなたのコード内では常にゼロです。

[X、Y、Z] * [1、-1,0] = [X、-Y、0]

関連する問題