私は、ユーザーがシーン内の 3D オブジェクトを選択できるようにするプロジェクトに取り組んでおり、この特定のシナリオにアプローチするための最良の方法は何であると誰もが考えているのか疑問に思っていました。
基本的に、少なくとも 100 個のオブジェクト (ローポリですが、少なくとも 12 ~ 15 個の三角形で構成されています) と最大約 1000 ~ 2000 個のオブジェクトを含むシーンがあります。
一部のオブジェクトは他のオブジェクトを遮るため、すべてのオブジェクトが常に「選択可能」であるとは限りません。そのため、「選択可能」オブジェクトはおそらく 800 ~ 1500 の範囲に収まります (シーンの複雑さによって異なります)。
オブジェクトが「選択」されると、何らかの方法で強調表示されるようにする必要があるため、異なる方法でレンダリングする必要があります。これは簡単なことですが、単一のクリックだけでなくドラッグでも選択を行う必要があります。つまり、選択を実行したいということです。短時間で多くのアルゴリズムを実行します。理想的には、オブジェクトがまだ「ドラッグ」操作中に強調表示されているのをユーザーが確認できるようにすることです (つまり、メインのレンダリングに遅れが生じないように、ピッキングはおそらく非同期で行う必要があります)。
簡単なレイ トレース ピッキングを試してみましたが、オブジェクトを見つけるためにシーン内のすべての三角形をループするため、これは明らかに非常に遅くなります。
GPU ベースのピッキングも試しました。各オブジェクトに固有の色を与えるピクセルバッファを使用してシーンをレンダリングしますが、ドラッグ操作では、複数のレンダリングと GPU から CPU へのデータ転送が必要になり、パフォーマンスが低下します。
必要なパフォーマンスと機能を得るために探索できる可能性は他にありますか?
御時間ありがとうございます。