質問: STLデータを表示するプログラムです。 いま法線ベクトルを設置したいと考えていますが方法がわからず詰まっています。 よろしくお願いします [
回答: STLファイルというのを知らなかったので調べてみましたが、面法線しか持たないデータ形式のようです。であれば、データから自ら頂点インデックス方式に変換する、またはなんらかのツールでSTLファイルを頂点インデックス対応の別の形式に変換するという二通りがあるかと思います。 自力で変換 ====== 1. STLreader::countTrianglesでポリゴン数をカウント、必要な数のTriangleを用意する 2. stlreader.readXXXで実際のポリゴンデータを取得する 3. 頂点インデックス方式用の頂点の配列を1つ、それとインデックス用のintの配列、何個コピーしたかをカウントする変数を用意する 4. 元データのTriangleの中の各頂点を、頂点インデックス方式用の頂点配列にコピー、インデックス用配列にインデックスを追加、コピーカウントを+1する。ただし、すでにコピーされている頂点の中にxyzが一致するものがある場合、頂点をコピーせず、カウントも増やさず、インデックスだけを追加する。 5. 出来上がった頂点インデックス方式の頂点と、インデックスから頂点法線用のベクトルデータを計算する データをツールで変換 =========== これは自分で探すしかありません。無料のもので済むならそれでいいですし、有料のものが必要なら自分で買うひつようがあります。STL形式は面法線しか対応していませんが、OBJ形式やX形式等にツールを通して変換すれば、もしかしたら頂点インデックス形式に変換してくれるかもしれません。