「MonoGameで使う3DモデルをFusion360で作成する」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator |
imported>Administrator |
||
21行目: | 21行目: | ||
* Fusion360でScaleを変更する方法もわからない(ない?) | * Fusion360でScaleを変更する方法もわからない(ない?) | ||
− | + | ||
− | + | ; 応急処置 | |
+ | VertexBuffer.GetData<Vector3>()で取得したバーテックス配列の中身を決め打ちで10倍にしてしまう。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
var allVertex = new Vector3[meshPart.NumVertices]; | var allVertex = new Vector3[meshPart.NumVertices]; | ||
38行目: | 39行目: | ||
</source> | </source> | ||
− | + | ||
+ | ; 備考 | ||
[[ゲーム]]では[[バーテックスバッファ]]を書き戻したいことはあまりないかもしれないが、[[物理演算]]を使ったシミュレーターなどで当たり判定を厳密にやりたい場合なんかはバーテックスバッファを取得して[[レイキャスティング]]を行うと結構いい感じになる。 | [[ゲーム]]では[[バーテックスバッファ]]を書き戻したいことはあまりないかもしれないが、[[物理演算]]を使ったシミュレーターなどで当たり判定を厳密にやりたい場合なんかはバーテックスバッファを取得して[[レイキャスティング]]を行うと結構いい感じになる。 | ||
[[category: MonoGame]] | [[category: MonoGame]] | ||
[[category: Fusion 360]] | [[category: Fusion 360]] |
2018年1月23日 (火) 07:42時点における版
準備
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;
}
- 備考
ゲームではバーテックスバッファを書き戻したいことはあまりないかもしれないが、物理演算を使ったシミュレーターなどで当たり判定を厳密にやりたい場合なんかはバーテックスバッファを取得してレイキャスティングを行うと結構いい感じになる。