問題タブ [stl-format]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - Qt3D によって作成されたメッシュを理解する
次のような Qt3D メッシュを作成します。
作成されたメッシュは次のようになります。
コードの後半で、上記のメッシュをSTL バイナリ形式でエクスポートしようとします。そのために、エンティティのジオメトリコンポーネントと変換コンポーネントを抽出します。
次に、頂点の位置と法線を含むバッファー データを取得します。
ここで、頂点位置アトリビュートと頂点法線アトリビュートに注目します。それぞれのバイト オフセットとバイト ストライドを取得し、両方が同じデータ バッファーを使用しているかどうかも確認します。
次に、バイト オフセットとバイト ストライドを使用して三角形を抽出し、STL ファイルに書き込みます。ただし、エクスポートされた STL は適切ではありません。
正常に動作するカスタム メッシュの STL をエクスポートするために同じコードを使用します。ただし、同じコードを使用して Qt3D の既製のメッシュをエクスポートするQConeMesh
と、エクスポートされた STL は受け入れられません。誰でも私にヒントを与えることができますか?
アップデート
@vre が指摘したように、三角形を STL ファイルに書き込むための残りのコードを投稿します。これは大きなコードです。明確かつ簡潔にするために最善を尽くしています。
三角形の位置と法線を取得するために、属性をループして、VertexBuffer
すべての位置と法線を格納するバッファーを取得します。
上記のコードは、カスタム メッシュに最適です。つまり、STL ファイルを Qt3D アプリケーションにインポートしてから、STL として再度エクスポートすると、エクスポートされた STLは良好です。問題は、Qt3D のような既製のメッシュを作成するときQConeMesh
に、エクスポートされた STLがめちゃくちゃになることです。つまり、全体的なジオメトリは問題ありませんが、上の画像に示すように三角形がめちゃくちゃになります。
をエクスポートしようとすると、私のコードは次の値をログに記録しますQConeMesh
。ご覧のとおり、法線ベクトルには単位サイズがあり、実際に法線であることを示しています。