4

カメラが向いている方向の 3D ベクトルと 3D 空間内の 3D オブジェクトの方向/方向ベクトルが与えられた場合、マウス ポインターが画面上で視覚的に従わなければならない 2 次元の勾配を計算するにはどうすればよいですか?そのオブジェクトの方向に沿って移動しますか?

基本的に、矢印をクリックしてドラッグして前後に移動できるようにしたいのですが、マウスポインターが矢印の長さに沿って(大まかに)ドラッグした場合、つまり矢印が指している方向にのみです。

ありがとうございました

4

2 に答える 2

1

あなたの質問を 100% 理解しているかどうかはわかりません。図を載せていただけませんか?

これらが興味深いかもしれません。カメラの方向(視線) ベクトルを指定してローカル XYZ 軸を計算するための以前の質問と、カメラに平行な平面でオブジェクトを平行移動するための質問に答えました。

これらの例は両方とも、Vector dot productVector cross productを使用して、必要なベクトルを計算します。あなたの例では、ベクトル内積を使用して、2 つのベクトルが見つかったらその角度を出力することもできます。

于 2012-01-27T09:28:18.660 に答える
0

これは、3D実世界座標を2D画面座標に変換するために使用している変換にある程度依存します。たとえば、遠近法、アイソメ図などです。通常、前方(3d-> 2d)と後方(2d-)があります。 > 3d)逆変換が情報を失う、プレイ中の変換。(つまり、各3Dポイントを前に進めると、一意の2Dポイントにマップされますが、ポイントから戻ると、同じ3Dポイントが生成されない場合があります)。多くの場合、マウスポイントをオブジェクトに投影して、欠落している寸法を取得できます。

マウスドラッグの場合、通常、ユーザーは操作(投影面での平行移動、ズームインまたはズームアウト、またはアンカーポイントを中心とした回転)を指定できます。入力は、ドラッグの開始時と終了時のマウス座標です。これを3D座標系に変換して、2つの3D座標を取得します。これにより、ドラッグ/変換などのdx、dy、dzが得られます。

于 2012-01-27T10:31:38.757 に答える