2

私はWebGL用のglMatrixでスケール変換を行おうとしています。

次の順序を使用すると、スケール変換がうまく機能します。

mat4.identity(mvMatrix);
mat4.translate(mvMatrix, [1, 1, 1]);
mat4.rotate(mvMatrix, degToRad(zAngle), [0, 0, 1]);
mat4.scale(mvMatrix, [2, 2, 2]);

ただし、スケーリング変換が最初に実行される場合、オブジェクトは再スケーリングされません。

mat4.identity(mvMatrix);
mat4.scale(mvMatrix, [2, 2, 2]);
mat4.translate(mvMatrix, [1, 1, 1]);
mat4.rotate(mvMatrix, degToRad(zAngle), [0, 0, 1]);

スケーリングは常に最後の変換コマンドとして実行する必要がありますか?

ありがとう、エバートン

4

1 に答える 1

4

OpenGL での「スタック」変換について理解するには、この回答を参照してください。もちろん、行列の乗算は可換ではないため、順序に基づいて異なる結果が得られます。

于 2012-06-29T18:07:54.400 に答える