[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00508] Re: 視点を移動した時のマウスに対応するVU空間の座標
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ソフトウェア業界専門求人・求職情報 ┃
┃ http://www.aun-soft.co.jp/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
つきやまです。
遠藤さん、アドバイスありがとうございます。
ENDO Yasuyuki wrote:
> 詳しく調べていませんが、イメージプレートの情報がz方向の移動時に
> 更新されていないような印象を持ちました。
そうなんです。
ここが問題かもしれないと考えているのですが、
視点を移動したことをどのようにフィードバックするかがわからないのです。
> com.sun.j3d.utils.behaviors.picking.PickObject.java の generatePickRay() では、
> getPixcelInImagePlate() と getImagePlateToVworld() の前に、
>
> > 216 canvas.getCenterEyeInImagePlate(eyePosn);
>
> を実行しているようですが、もしやってみていないようでしたらお試しください。
generatePickRay()では、
public PickShape generatePickRay(int xpos, int ypos)
{
Transform3D motion=new Transform3D();
Point3d eyePosn = new Point3d();
Point3d mousePosn = new Point3d();
Vector3d mouseVec=new Vector3d();
canvas.getCenterEyeInImagePlate(eyePosn);
canvas.getPixelLocationInImagePlate(xpos,ypos,mousePosn);
canvas.getImagePlateToVworld(motion);
motion.transform(eyePosn);
motion.transform(mousePosn);
mouseVec.sub(mousePosn, eyePosn);
mouseVec.normalize();
pickRay.set(eyePosn, mouseVec);
return (PickShape) pickRay;
}
と、視点情報も取得して、同じく ImagePlateからVirtualWorldへの変換をし、
視点とマウスポイントの座標からRayを生成していると思います。
(マウスポイントをmotionで変換した座標はVW空間でのZ = 0.0を指している
ということになるのですよね?)
この仕組み自体を十分に理解していないのが原因です。
ここで、Rayとなる直線のZ=0.0のX,Y座標を取ると良いのかとも思いますが、
どうでしょうか。
また、getPixelLocationInImagePlate() や getImagePlateToVworld() に視点
移動の情報をフィードバックすればうまくいくのではないかと思うのですが、
方法がわかりません。
アドバイスを頂けると助かります。
よろしくお願いいたします。
Mitsuru Tsukiyama