var fNearZ = -100.0;
var farZ = 100.0;
var fZoom = 10.0;
var iR = this.iWidth/fZoom;
var iL = (this.iWidth/fZoom)*(-1);
var iT = this.iHeight/fZoom;
var iB = (this.iHeight/fZoom)*(-1);
var pMatrix = new mat4.ortho(iL, iR, iB, iT, fNearZ, farZ);
var mvMatrix = new mat4.create();
mat4.identity(mvMatrix);
zI.debug(mat4.str(mvMatrix),{'grp':'mv_before','style':'color:#060;'});
mat4.translate(mvMatrix, [0.0, 0.0, -50.0]);
mat4.scale(mvMatrix, [3, 3, 3]);
zI.debug(vec3.unproject([
parseFloat(this.pLastMouse.x-this.iLeft),
parseFloat(this.pLastMouse.y-this.iTop),
0
],
mvMatrix,
pMatrix,
[
0,
0,
this.iWidth,
this.iHeight
]),{'grp':'dest____','style':'color:#00F;'});
this.setMatrices(pMatrix, mvMatrix);
//After this line, buffers will be set
SCREENのURL:私はvec3.unprojectを提供し、GL-行列の新しいバージョンで私のマウスの衝突を実現しようとしたhttp://i.stack.imgur.com/au2ac.pngvec3.unproject()マウスの衝突問題
今日。私が望むのは、マウス位置のzワールド座標を取得することです。スクリーンショットで見てきたように、x座標とy座標はOKですが、カーソルがどこにあるかにかかわらず、z座標は常に50です。
各プレーンは1.0x1.0で、間隔は0.1です。
私はY軸に回転または平行移動を追加すると、私は間違った(?)x座標とy座標をunprojectから受け取ります。私はmvMatrixとpMatrixを扱う方法が間違っていると思います。誰でも助けてくれますか?
EDIT私は、これらの機能を適用すると、.translate()と.scale()私はまだ座標が正しいかどうかわからない、今zNearとzFarの正しい値を取得していた機能を使用しない モデルビュー行列に追加します。依然として欠けているのは交差計算です。
私のソースへのリンク:
glMatrixのunproject関数は非常に新しく、複数のシナリオで厳密なテストをまだ受けていません。私は何かをしたことが完全に可能です。私はそれをチェックすることができますので、あなたのソースをどこかに投稿することは可能でしょうか? – Toji
http://jsfiddle.net/matthoz/vucAq/ < - 私を笑ってはいけません;) - テクスチャはjsfiddleでは機能しません。しかし、私はあなたのコードは正常に動作することを伝えることができます。 – mat