0

テクスチャ (POLYGON_FILL) を使用して 3D メッシュを正常にレンダリングしています。私がやりたいことは、プログラムで異なる色の線 (POLYGON_LINE PolygonAttribute) を同時に描画て、三角形のエッジを表示することです。これは、3D モデリング プログラムやそのようなアプリケーションで見られるようなものです。つまり、顔のエッジを示すワイヤ アウトラインを備えた顔のテクスチャです。

これは API を介して簡単に実行できますか? それとも、ある程度の創造性が必要ですか? テクスチャの座標を変更して、テクスチャがポリゴンのエッジをわずかに下回るようにすることができると思います (ただし、面のエッジのギャップが大きく変化すると一貫性がないように見えると思います)。ただし、TexCoordGeneration を使用していますが、そのようなことをどこから始めるべきかを確認してください。

基本的に、これは一種の基本的だが高度にカスタマイズされた 3D モデラー アプリ用になるため、3D ジオメトリのユーザー操作に関してはあまり一般的ではない操作が行われます。

4

1 に答える 1

1

私は OpenGL に精通しているため、残念ながらこの回答は理論上の教訓に過ぎません。これがJava3Dの「組み込み」機能であるとは思いません(そうであれば、誰でも自由に修正してください)。それを実現するには、複数のレンダリング パスを実行する必要があります。このトピックについて行ったばかりのちょっとした検索から、Java3D がその種のことをあまりサポートしていないように見えます。特に「高度にカスタマイズされた 3D モデラー アプリ」であると述べたことを考えると、OpenGL のような下位レベルの API の使用を検討することをお勧めします。画面への描画方法をより詳細に制御できます。

そうは言っても。これは、高レベルの回答の試みです。すべての線を表示しますか、それとも他のポリゴンの後ろに隠れていない線のみを表示しますか?

非表示の線のみをレンダリング

フレームごとに、次のことを行う必要があります。

  1. でメッシュをレンダリングしPOLYGON_FILLます。
  2. 深度バッファをクリアせずに、 でメッシュを再度レンダリングしPOLYGON_LINEます。

深度バッファは、ビューアからポリゴンまでの距離に基づいて、ピクセルを描画するかどうかを決定します。javadoc によると、 Java3Dのデフォルトの深度テストLESS_OR_EQUALは、テクスチャの上に線が描画されるようになるはずです。

すべての線をレンダリング

これは上記と同じですが、2 つのレンダリング パスの間に深度バッファをクリアする必要があります。

于 2011-05-21T04:07:57.060 に答える