「MonoGameで使う3DモデルをFusion360で作成する」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator |
imported>Administrator |
||
(同じ利用者による、間の3版が非表示) | |||
24行目: | 24行目: | ||
; 応急処置 | ; 応急処置 | ||
VertexBuffer.GetData<Vector3>()で取得したバーテックス配列の中身を決め打ちで10倍にしてしまう。 | VertexBuffer.GetData<Vector3>()で取得したバーテックス配列の中身を決め打ちで10倍にしてしまう。 | ||
− | |||
<source lang="csharp"> | <source lang="csharp"> | ||
var allVertex = new Vector3[meshPart.NumVertices]; | var allVertex = new Vector3[meshPart.NumVertices]; | ||
43行目: | 42行目: | ||
; 備考 | ; 備考 | ||
[[ゲーム]]では[[バーテックスバッファ]]を書き戻したいことはあまりないかもしれないが、[[物理演算]]を使ったシミュレーターなどで当たり判定を厳密にやりたい場合なんかはバーテックスバッファを取得して[[レイキャスティング]]を行うと結構いい感じになる。 | [[ゲーム]]では[[バーテックスバッファ]]を書き戻したいことはあまりないかもしれないが、[[物理演算]]を使ったシミュレーターなどで当たり判定を厳密にやりたい場合なんかはバーテックスバッファを取得して[[レイキャスティング]]を行うと結構いい感じになる。 | ||
+ | |||
+ | == 関連項目 == | ||
+ | * [[MacOS版のMonoGameのPipeline.appで3Dモデルをビルドできない]] | ||
+ | * [[MonoGameのカメラを作る]] | ||
+ | * [[MonoGameで外部のXNBファイルを読み込む]] | ||
[[category: MonoGame]] | [[category: MonoGame]] | ||
[[category: Fusion 360]] | [[category: Fusion 360]] |
2018年1月23日 (火) 07:43時点における最新版
準備[編集 | ソースを編集]
MonoGameの3D座標系は「Yアップ右手座標系」となっているので、Fusion360も作図前にこの設定に変更する。これを忘れると変な向きで表示されて残念なことになる。
- Fusion 360の環境設定
- 「一般」「既定のモデリング方向」→「Y(上方向)」
作成[編集 | ソースを編集]
- Fusion360でモデルを作りA360に保存する
- A360でfbxファイルにエクスポートする
- MonoGame Pipelineでfbxファイルをxnbファイルに変換する
表示[編集 | ソースを編集]
- Mesh.Draw()での表示は問題なし
バーテックスバッファの取得[編集 | ソースを編集]
meshPart.VertexBuffer.GetData<Vector3>()でバーテックスバッファを取得すると値が1/10になってる。
- A360が吐き出すfbxファイル中の「lcl scale」が「10」になってるせいだと思われる。
- MonoGameのModelクラスからscaleの値を取得する方法がわからない(ない?)
- Fusion360でScaleを変更する方法もわからない(ない?)
- 応急処置
VertexBuffer.GetData<Vector3>()で取得したバーテックス配列の中身を決め打ちで10倍にしてしまう。
var allVertex = new Vector3[meshPart.NumVertices];
meshPart.VertexBuffer.GetData<Vector3>(
meshPart.VertexOffset * declaration.VertexStride + vertexPosition.Offset,
allVertex,
0,
meshPart.NumVertices,
declaration.VertexStride);
for (int i = 0; i <= allVertex.Length; ++i)
{
allVertex[i] = allVertex[i] * 10;
}
- 備考
ゲームではバーテックスバッファを書き戻したいことはあまりないかもしれないが、物理演算を使ったシミュレーターなどで当たり判定を厳密にやりたい場合なんかはバーテックスバッファを取得してレイキャスティングを行うと結構いい感じになる。