5

で3D オブジェクトを作成しました。オブジェクトは人体のようなもので、タッチで回転させることができます。この 3D オブジェクトのタッチ位置を検出するにはどうすればよいですか。ユーザーが頭に触れた場合、それが頭であることを検出する必要があります。手に触れた場合は、それを特定する必要があります。オブジェクトが他の方向に回転しても機能するはずです。3D オブジェクト上のタッチの座標が必要だと思います。
これは、ビューのタッチ位置を取得する方法です。

- (void) touchesBegan: (NSSet*) touches withEvent: (UIEvent*) event
{
    UITouch* touch = [touches anyObject];
    CGPoint location  = [touch locationInView: self];
    m_applicationEngine->OnFingerDown(ivec2(location.x, location.y));
}

誰でも助けることができますか?前もって感謝します!

4

3 に答える 3

2

レイ トレーシングはオプションであり、まさにそれを行う (ピッキング) ために多くのアプリケーションで使用されます。レイ トレーシングの問題点は、このソリューションは非常に単純な基本機能を機能させるために多くの作業を必要とすることです。また、レイ トレーシングは遅くなる可能性がありますが、トレースするレイが 1 つしかない場合 (指の位置など) は問題ありません。

OpenGL の API は、オブジェクトを選択する手法も提供します。たとえば、http ://www.lighthouse3d.com/opengl/picking/ をご覧になることをお勧めします。

最後に、オブジェクトの頂点をスクリーン スペースに投影し、単純な 2D テクニックを使用して、オブジェクトのどの面が重なり合っているかを調べるという最後のオプションがあります。

于 2013-08-17T00:19:36.713 に答える