DXライブラリで3Dモデル表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Rom
記事: 25
登録日時: 14年前
住所: 日本

DXライブラリで3Dモデル表示

#1

投稿記事 by Rom » 13年前

少し前にBlenderというモデリングソフトでバレンタインのチョコレートを作りました

DXライブラリで3Dをやるのに慣れるためにとりあえずそれを表示してみようと思いやってみましたがうまくできませんでした
調べてみたところBlenderとの相性が悪いと言う話も見つかりましたが、一応表示自体はできているのでなんとかお力を貸していただきたい


Blenderで作ったファイルをBlenderで.xにしてエクスポート
DXライブラリ付属のツール「DxLibModelViewer」で見るとすでにおかしい

一応プログラムで実行もしてみましたが相変らずおかしい

コード:

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	int ModelHandle ;

	// DXライブラリの初期化
	if( DxLib_Init() < 0 )
	{
		// エラーが発生したら直ちに終了
		return -1 ;
	}

	// 3Dモデルの読み込み
	ModelHandle = MV1LoadModel( "choco_2.x" ) ;

	// 画面に映る位置に3Dモデルを移動
	MV1SetPosition( ModelHandle, VGet( 320.0f, 200.0f, -300.0f ) ) ;
	MV1SetScale( ModelHandle, VGet( 50.0f, 50.0f, 50.0f ) ) ;

	// 3Dモデルの描画
	MV1DrawModel( ModelHandle ) ;

	// キーの入力待ち
	WaitKey() ;

	// DXライブラリの後始末
	DxLib_End() ;

	// ソフトの終了
	return 0 ;
}


あともう一つ
Blenderでモデリングしたものはかなり小さく、DXらいぶらりで見れるようにするには拡大率50倍ぐらいがちょうどいいんですが
3Dを扱ううえではこれは割と普通のことなんですかね


一応目的とする画像(こうなったら成功)というものと現状の画像、.blendファイルを添付します
添付ファイル
チョコ.zip
(49.18 KiB) ダウンロード数: 205 回
現実.png
現実.png (3.57 KiB) 閲覧数: 8129 回
理想.png
理想.png (18.81 KiB) 閲覧数: 8129 回

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: DXライブラリで3Dモデル表示

#2

投稿記事 by softya(ソフト屋) » 13年前

モデルに関してはDXライブラリの作者さんに対応してもらうのが良いでしょう。

[追記] 3Dソフトには座標の扱いで右手系と左手系と言う種類があります。
Blenderは右手系でZアップ、DirectXは左手系でYアップです。 DXライブラリだとDirectXに属しますので左手系でYアップだと思います。
Blenderのxファイル出力で右手系から左手系に変換する必要があると思います。

「blenderからXファイル - octech」
http://d.hatena.ne.jp/octech/20070424

あとスケールに関しては、カメラなどをちゃんと設定しないと正しいサイズでは表示されません。
DxLibModelViewerだと自動設定されるんで、普通に調度良いサイズで表示されますよね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Rom
記事: 25
登録日時: 14年前
住所: 日本

Re: DXライブラリで3Dモデル表示

#3

投稿記事 by Rom » 13年前

softyaさんありがとうございます

座標系に関しては大丈夫だと思います(理想.pngが左右反対なのでややこしかったですね)

この質問をしてからもいろいろいじってみたのですがおそらくモデリングの方の問題っぽいので
そっち系をあたってみます

>DxLibModelViewerだと自動設定されるんで、普通に調度良いサイズで表示されますよね?
はい

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: DXライブラリで3Dモデル表示

#4

投稿記事 by softya(ソフト屋) » 13年前

Rom さんが書きました:softyaさんありがとうございます

座標系に関しては大丈夫だと思います(理想.pngが左右反対なのでややこしかったですね)

この質問をしてからもいろいろいじってみたのですがおそらくモデリングの方の問題っぽいので
そっち系をあたってみます

>DxLibModelViewerだと自動設定されるんで、普通に調度良いサイズで表示されますよね?
はい
右手系と左手系が違うと物体のオモテ面と裏面判定が異常になりますので映像を見るかぎり、その問題が出ている様に感じました。
部分的に面が欠けてますよね。そこは大丈夫なのですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Rom
記事: 25
登録日時: 14年前
住所: 日本

Re: DXライブラリで3Dモデル表示

#5

投稿記事 by Rom » 13年前

座標系はきちんとできています
表裏もあってます(文字を書いたテクスチャを使用して確認)

もっと簡素なモデルでも試してみました(添付ファイル)

こちら欠けてる面はありますが描画順がおかしい、というか一番手前の面が見えないような状態になってます
添付ファイル
heisi.png
Blenderでのレンダリング
heisi.png (35.82 KiB) 閲覧数: 8000 回
検証.png

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: DXライブラリで3Dモデル表示

#6

投稿記事 by softya(ソフト屋) » 13年前

チョコのデータを見ると三角形メッシュと四角形メッシュが混在しています。
うまく表示されないのは四角形メッシュだと思うのですが実験してみてもらえますか?
もし、そうなら全部三角形メッシュに統一すれば上手く表示される気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Rom
記事: 25
登録日時: 14年前
住所: 日本

Re: DXライブラリで3Dモデル表示

#7

投稿記事 by Rom » 13年前

確かにBlenderはxファイルエクスポート時に三角形に変換してくれないからだめだな、みたいな文章を調べている最中に見かけました


やり方が正しいかはわかりませんが全て選択>編集>面>三角形面に変換でやってみましたが
チョコレート・兵士ともに変わらずでした

というかBlenderでの編集時点でビューモードを[テクスチャ]にすると検証画像のようになっているみたいです
つまりDXライブラリ関係なくねっていう

ビューモードが[シェイド]までなら正しく表示されます

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: DXライブラリで3Dモデル表示

#8

投稿記事 by softya(ソフト屋) » 13年前

それであればテクスチャの貼り方が問題だと思います。
blenderでなんと言うか分かりませんがサーフェイス?情報などを調べてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る