問題タブ [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.

0 投票する
1 に答える
1808 参照

qt - Qt3D によって作成されたメッシュを理解する

次のような Qt3D メッシュを作成します。

作成されたメッシュは次のようになります。

コーンメッシュ 円錐メッシュ、別のビュー


コードの後半で、上記のメッシュをSTL バイナリ形式でエクスポートしようとします。そのために、エンティティのジオメトリコンポーネントと変換コンポーネントを抽出します。

次に、頂点の位置と法線を含むバッファー データを取得します。

ここで、頂点位置アトリビュートと頂点法線アトリビュートに注目します。それぞれのバイト オフセットバイト ストライドを取得し、両方が同じデータ バッファーを使用しているかどうかも確認します。

次に、バイト オフセットバイト ストライドを使用して三角形を抽出し、STL ファイルに書き込みます。ただし、エクスポートされた STL は適切ではありません。

エクスポートされた STL は良くありません


正常に動作するカスタム メッシュの STL をエクスポートするために同じコードを使用します。ただし、同じコードを使用して Qt3D の既製のメッシュをエクスポートするQConeMeshと、エクスポートされた STL は受け入れられません。誰でも私にヒントを与えることができますか?


アップデート

@vre が指摘したように、三角形を STL ファイルに書き込むための残りのコードを投稿します。これは大きなコードです。明確かつ簡潔にするために最善を尽くしています。

三角形の位置と法線を取得するために、属性をループして、VertexBufferすべての位置と法線を格納するバッファーを取得します。

上記のコードは、カスタム メッシュに最適です。つまり、STL ファイルを Qt3D アプリケーションにインポートしてから、STL として再度エクスポートすると、エクスポートされた STLは良好です。問題は、Qt3D のような既製のメッシュを作成するときQConeMeshに、エクスポートされた STLめちゃくちゃになることです。つまり、全体的なジオメトリは問題ありませんが、上の画像に示すように三角形がめちゃくちゃになります。

をエクスポートしようとすると、私のコードは次の値をログに記録しますQConeMesh。ご覧のとおり、法線ベクトルには単位サイズがあり、実際に法線であることを示しています。