2015年6月20日土曜日

Blenderでポリゴンの裏を描画しないようにする手順 (メタセコからの転入者向け)

メタセコで形を作って、テクスチャアトラスやモーションをBlenderで作る、という方式をやろうとしている私です。

Blenderはmqoインポーターが付いているのはいいんですが、デフォルトだと片面ポリゴンも両面描画する仕様になってまして、建物内の部屋データとか作るときにしんどいんですね。

で、片面描画だけにする手順を見つけたのでメモします。



※注意
筆者はBlenderおよびDCCツール初心者なので、これが正解とは限りません。マサカリ歓迎。 

[追記]

ファッキンファック!


苦労してマテリアルをイジる手法で片面表示を指定ましたが、オプション一つでシーン全体の片面表示が可能であることが判明しました。

3Dビューで「N」キーを押してプロパティー一覧を出し、「シェーディング」の「裏面の非表示」を選択。


おわり。

俺より後に似たようなことに挑戦した方が、時間をドブに捨てずにすみます。本当にありがとうございました。

以下はその無駄な手順です。

まず、エディター「アウトライナー」から片面描画にしたいオブジェクトを選択。



エディター「ノードエディター」を開いて





「ノードを使用」にチェックを入れる。
※筆者はこれが分からなくて2時間ドブしました。ノードエディターなのにノードを使うがデフォでオンになってないって何やねん自己否定か。



デフォルトのノード構成はこんな感じ

「マテリアル」の丸いマークをクリックして、編集対象のマテリアルを選択(ややこしい、正確な呼び方不明)






ノードエディターの「追加」「入力」「ジオメトリ」の順に選択してジオメトリノードを追加。
同様に「追加」「コンバーター」「カラーランプ」でカラーランプノードも追加。





画面には合計4つのノードになる。
ジオメトリノードの一番下「前後」をカラーランプノードの「係数」に接続。
カラーランプノードの「カラー」を出力ノードの「アルファ」に接続。

はいこれで指定マテリアルの裏面が描画されなくなりました!!






うーんこういうのオプションでポチッと切り替わらんもんなのかのう....



参考:
ポリゴンの裏側を表示しない方法について
Blenderで裏面ポリを描画しない方法
ノードエディタのマテリアルノード

2015年6月14日日曜日

[Unity]NavMeshAgent.Stopのワンポイント ピタッと止める in Unity 5

Unity 5から、NavMeshAgent.Stop()のstopUpdatesオプションが削除されたので、どうにかしようとした。

[Unity]NavMeshAgent.Stopのワンポイント ピタッと止める
http://ttwco.blogspot.jp/2015/04/unitynavmeshagentstop.html 

デフォルトのStop()はアクセラレーションが効いて即座に止まらず少し滑ってから止まるので、
ゲームポーズとかの実装に支障がある。
そこでUnity 4まで NavMeshAgent.Stop(true) としていたのが、Unity 5で使えなくなったので代替手段を探したというお話。

結論、Stop()を呼ぶ前にvelocityの値を0にすることで解決。
 navMeshAgent = GetComponent<NavMeshAgent>();

        navMeshAgent.velocity = Vector3.zero;
        navMeshAgent.Stop();

こうね。

ここに辿り着くまでの軌跡はUnity Communityにも投稿しました。
http://forum.unity3d.com/threads/solved-how-can-i-stop-navmesh-agent-sliding-in-unity5.332233/

"NavMeshAgent.updatePosition = false".で行けるかなと思ったんですが、このオプションはNavMeshAgentを止めるわけではなく、親コンポーネントをAgentに追従させるのを辞めるという謎挙動。
シーンビュー見てるとキャラクターからNavMeshAgentだけ剥がれて動く様子が見れます。なんのために使うオプションなんだろう...