トップページ > 過去ログ > 記事閲覧
動く3Dモデルに弾痕
名前:hinata 日時: 2013/04/26 12:37

 弾が当たった3Dモデルに弾痕をつけたいと考えております。 静止物ですとMV1CollCheck_Lineで三点座標が取得できるので問題ないのですが、 アニメーションするスキンメッシュですと頂点が移動しますので 方法を考えておりますがうまくいかずご質問させていただきました。 MV1CollCheck_Lineで当たり判定を行ったモデルでわかる情報としまして3つありました。 @当たったポリゴンが含まれるフレームの番号 A当たったポリゴンが使用しているマテリアルの番号 B当たったポリゴンを形成する三点の座標  ここで、当たったポリゴンが使用しているトライアングルリスト番号、頂点番号が取得でき、 フレームの番号、マテリアルの番号、トライアングルリスト番号、頂点番号から 現在の頂点位置が割り出せればと思ったのですがそういった関数もなさそうです。 動く3Dモデルに弾痕をつける場合のよい方法があればお教えください。

Page: 1 |

Re: 動く3Dモデルに弾痕 ( No.1 )
名前:管理人 日時:2013/04/30 00:27

すみません、MV1CollCheck_Line の戻り値である MV1_COLL_RESULT_POLY構造体に 後から追加した PolygonIndex というメンバ変数についてリファレンスに記述されていませんでした この int PolygonIndex はフレーム内のポリゴンの番号を示しているのですが、 これと MV1GetReferenceMesh で取得できる情報を使うことで以降のポリゴン座標を 取得することができます int PolyIndex ; // ← MV1_COLL_RESULT_POLY構造体のメンバ変数 PolygonIndex の値 MV1_REF_POLYGONLIST PolyList; VECTOR PolyPos[ 3 ]; PolyList = MV1GetReferenceMesh( MV1CollCheck_Line で使用したモデルハンドル, MV1CollCheck_Line で指定したフレーム番号, TRUE ) ; PolyPos[ 0 ] = PolyList.Vertexs[ PolyList.Polygons[ PolyIndex ].VIndex[ 0 ] ].Position ; PolyPos[ 1 ] = PolyList.Vertexs[ PolyList.Polygons[ PolyIndex ].VIndex[ 1 ] ].Position ; PolyPos[ 2 ] = PolyList.Vertexs[ PolyList.Polygons[ PolyIndex ].VIndex[ 2 ] ].Position ; よろしければお試しください m(_ _)m
Re: 動く3Dモデルに弾痕 ( No.2 )
名前:hinata 日時:2013/05/03 20:43

ありがとうございます。

Page: 1 |