blenderで作ったモデルをDxLibで表示したいんだけど

手順のまとめはこっち
nsan.hatenablog.com

以下は試行錯誤の履歴


------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
blenderで作ったモデルをDXライブラリで表示させれたらいいなって

目標

Blenderで作った3DモデルをDXライブラリで読み込んで正しく表示させる

環境

Windows10
blender v2.79
DXLib 2017.3.18c
Metasequoia4 v4.6.5

やったこと

下記を参考に超低くおりてぃな木を作成
ch.nicovideo.jp
下記を参考にファイル出力
catlanguage2.blogspot.com

作ったの
f:id:Nsan:20180729221342p:plain

で、これをDxLibModelViewerで表示させると次のような問題が発生

  1. blender上では裏面は透明にならないがViewer上では裏面が透明になる
  2. 葉っぱが表示されない(.x拡張子時)
  3. やけに黒い

1つ目の問題に関しては、裏面のテクスチャの設定かと思われる
が、設定 is どこ
ノードエディターでなんか表裏設定できそうだけど、透過の設定方法が不明
あと裏面も表面と同様に見たいなのもわからん

2つ目の問題は、ここに書いてある
togetter.com
パーティクルの変換ボタンを押すことで解決
が、表面も透明なんですがこれは一体

f:id:Nsan:20180729223356p:plain
(DxLibModelViewer上での様子)

3はわからん、なんでや

Metasequoiaを経由する

xファイルでの出力を諦めて3dsファイルでメタセコに表示させてみる
相変わらず裏面は透明のご様子

f:id:Nsan:20180729223837p:plain

あと、木と地面のテクスチャも貼れてないな?
blender上で何かできるんかねこれ

追記1:
以下を参考にメタセコ上でCtrl+Aしてから
上のメニューにある選択部処理の面を両面化したら透明はなくなった
howto.clip-studio.com

追記2:
メタセコを経由しない方法で行く
ファイル出力はfbxで、DxLibModelViewerでmv1形式に変換する

まず、木と地面のテクスチャが貼れていない問題は
各オブジェクト、というかメッシュをUV展開していなかったことが原因である模様

UV展開はまぁggって、自分が参照したのは以下の最初の方
Blender操作忘備録 : 透過画像の透過部分は透明にしたい!のメモ - livedoor Blog(ブログ)

これを行うことでテクスチャが無事に貼られた


次に、木がやけに暗い問題は、照明との関係の模様
blender内のマテリアルのシェーディングの放射の値を少し増やせば
一応可視可能となる


次に、裏面が透明となる問題は、次の通り(Unityだけど)のようにblenderの設定では機能しない
uuupa.hatenablog.com
そのため、裏面も使いたいオブジェクトを全て複製し、面を反転させることで対応する
複製の方法はここを参照
ch.nicovideo.jp

反転はこっち
blenderfaq.blender.jp

日本語でも似たような項目があるのでその辺を選択していく


ここまでやると次のような感じで表示される
f:id:Nsan:20180730232254p:plain

残る問題は、

  1. 透過がうまく反映されていない
  2. レイヤー数が滅茶苦茶ある

の2点となった
前者はなんとなく描画順の関係な気がしなくもないが
それを回避する3D描画方法も確立されているはずなので
Viewerの問題なのかやっぱりこっちが間違ってるのか不明


追記3:
レイヤー数が滅茶苦茶ある問題は、オブジェクトを統合することで回避可能
オブジェクトモードで左メニューのツールの中の統合で可能
なお、この時、木と葉を同時にくっつけないと
何故か葉が大量発生するので要注意

透過についてはやはり描画順の可能性が高い
ktstg.blog.shinobi.jp

上記の記事のように、dxlibでは描画順を考慮しなければならない
そのため、今回やった手法で生成した木のモデルは
dxlibでは表示できるが思った通りにならない可能性が高い

論文とか漁ってたら、zバッファ法とかBSP法とかでてきた
もうちょい人類頑張って
要するに、木の中心部、葉同士の重なり合いにα値を使わないように作る
あるいは一切α値を使わない他あるまい


さて、一通りできたので整理して別記事にまとめるとする