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のさらに遠くにあるオブジェクトは、拡大/縮小しない/別のものを実行しません。何がありますか?モーフィング
私は 'z'は、上記変化しない参照。 'z'を変更しているコードはどこですか?また、あなたの投影行列は何ですか? – gman
質問が更新されました。投影行列は、PerspectiveCameraを使用している場合は、デフォルトでTHREEによって渡されているものです。読み込み:確かではありません... –
'morphed * vec3(1、-1、0)'は、 '' morphed''が何であれ、乗算後に 'z'座標が0になることを意味します" – prisoner849