Cinema4Dメモ

Cinema4Dという3DCGソフトに関するメモ書きです。

MoGraphで複数の種類の木の植え分け

2016-03-09 11:47:01 | Cinema4D設定、操作

そういうわけで、カメラの描画範囲外のオブジェクトを非表示にするXPressoの開発は頓挫中です。配置が終わったらヌルでグループ化してエディタで非表示にしとけばいいんじゃね?ッて感じです。

木のオブジェクトを地形の起伏に合わせて配置するようなとき、MoGraphのクローナーのオブジェクトタブで分布「サーフェイス」を使うと簡単なんですが、木の種類が複数ある場合、ごちゃまぜに配置されます。シェーダーエフェクタを使うと生え方をコントロール出来るようです。

生やしたい複数の樹木のオブジェクトをクローナーの子にします。

そしてクローナーのオブジェクトタグで「分布」をサーフェイスにして複製数なんかを決めます。ごちゃまぜにクローンが作られます。

シェーダエフェクタを作って、クローナーに適用し、生え方をコントロールするためのグレースケール画像を用意し、読み込みますこの例では単純なグラデーションの画像を適用してます。

クローナーの子の上のほうがグラデーションの黒側になるみたいです。

「クローンを修正」の値を下げるとエフェクタの効力が下がって元のごちゃまぜ状態に戻っていきます。

クローナーのエフェクタタブのリスト内の「シェーダ」のスライダーをいじっても混ぜ具合が調整できます。どっちのスライダーで決めるかは任意です。

↓違う画像を使ってみました。

 


エディタでの表示とレンダリングでの表示

2016-03-02 16:41:10 | Cinema4D設定、操作

 XPressoで「エディタでの表示」と「レンダリングでの表示」をコントロールする際、0が表示、1が非表示なんだけど、「親に従う」はなんだろうなと思って試したら2でした。データタイプは整数でも実数でもOK。

0と1については、データのタイプはブールの真(TURE:1)と偽(FALSE;0)でもOKです。だけど感覚的に逆になるので使いにくいです。


動作が重い

2016-03-01 10:27:40 | Cinema4D設定、操作

そういうわけで、2つの機能を合体させたXPressoですが、特にカメラの描画範囲から外れたオブジェクトを非表示にする計算が高負荷らしく、すげー重いです。

単純にカメラより後ろを全部非表示にするみたいな大雑把な処理のほうが速いのかも。Pythonスクリプトで作れば速くなるのかな?

オブジェクトの切り替えの方はそれなりに有効のような気がします。


カメラから見えない位置にあるオブジェクトを動的に非表示/表示する

2016-02-28 00:32:34 | Cinema4D設定、操作

そういうわけで、今度はカメラから見えない位置にあるオブジェクトを自動的に非表示にするXPressoを作ってみました。

↓のような状態が・・・

こうなります↓

もっと消したいYo!って場合は、カメラのユーザデータであるところの「Culling Width」ってパラメータを+側に振るともっと効くようになります。が、振り過ぎると破綻しますw

↓カメラの向きを変えても大丈夫w

カメラの画角を変えても大丈夫です(^o^)

そんで、XPressoはどうなってるかというと・・・

上の図のようになってます。

まずこのXPressoがなにをしているのかというと、まずカメラの向いている方向と、非表示にしたり表示したりしたいオブジェクトの成す角度を求めます。それがカメラのFOVより大きければカメラの見える範囲の外ということで非表示にするって処理になります。(正確には得られた角度がFOVの半分より大きければ非表示でいいんだけど、際の部分が消え過ぎなので、CullingWidthってパラメータを作って微調整するようにしますた)

内積ノードを使って角度を求める部分のノード構成はCinema4Dのヘルプのまんまですw

「Camera01_null」ってのをカメラの向いている方向前方に置いていて、これとカメラの位置からカメラのベクトルを作って、表示/非表示を切り替えるオブジェクトとカメラの位置座標からもう一つのベクトルを作ります。「Camera01_null」の位置は「絶対位置」にする必要があります。

 

後は前回のXPressoと合体させればいいのかな。それともタグを2つつけて優先順位付けでいいんだろうか?


カメラからの距離に応じて表示するオブジェクトを切り替える

2016-02-25 14:08:15 | Cinema4D設定、操作

昨年11月にFF11を現役復帰したため、全く更新していませんでした。めちゃくちゃ快適になっててワロタ。

さて、ゲームだとカメラから遠いオブジェクトはローポリで近づくとハイポリに切り替えて描画の負担を軽減してますが、Cinema4Dで出来るのかと思って、XPressoでやってみました。

球体がハイポリオブジェクト、正多面体がローポリ用ってことにして、同じ位置に重ねていて、それに上のXPressoを付けて、MoGraphでコピーし、編集可能にしてます。

カメラと球体の距離を計算して、それをカメラのユーザデータで作った「LOD設定距離」の値と比較し、遠ければポリゴン数の少ない正多面体を表示し、近ければ球体を表示するようになってます。


障子の反対側に落ちる影(2015)

2015-11-06 09:08:42 | Cinema4D設定、操作

江戸時代の屋台を作ってる(他にも作るんですけど)わけですが、障子の反対側に影が映るようにしたいので、手っ取り早く過去記事の「障子に落ちる影を反対側から見る(2010.01.17)」で使ったマテリアルをコピペして使っていたんですが、よく見ると、R17のSSS:内部拡散反射とは違う。R17の方(どのバージョンで変わったのか知らんけど)が随分複雑化していました。そして、初期状態では影が反対側に映らない!のでメモ。

もっとも重要なのは、シングルスキャッタリングの「オン」です。

オンにチェックを入れると

ちなみに他のパラメータは下の画像のような感じです。

古いバージョンの場合、下の画像のようになってました。

忘れてならないこととして、オブジェクトに厚みが必要です。屋台の障子紙の場合、立方体を薄くしています。昨日の画像も奥の方の障子紙は単なる平面オブジェクトだったので効果が出ていませんでした。


モデリング軸

2015-11-05 10:15:27 | Cinema4D設定、操作

スケールツールにモデリング軸という項目があって、スケールするときにどこを原点にスケールするのを調整できます。

江戸時代の屋台を作ってて、旗を大きくしたいのですが、

選択したポイント群の中心に軸があるんで、このままスケールを実行すると、上の方にもポイントが動いてしまいます。再度移動ツールで下にずらす必要があります。

↓そこでスケールする前にモデリング軸の位置を動かします。Y方向に動かします。

↓スケールするといい感じに出来ました。

回転ツールにもオブジェクト軸のオプションはあるので、回転の中心を調整できます。

※この屋台のモデルはの深川江戸資料館の展示物の写真を見て作りました


R16のGI

2015-03-23 22:43:40 | Cinema4D設定、操作

R15辺りでGIの性能が悪くなったっつーのは何処かで読んだことがあったんですが、今日検証していると確かに画質が悪くなっているし遅い。

下の画像はR16の標準的な設定によるレンダリングですが、遅い上にムラがあります。

プライマリをイラディアンスキャッシュ(旧)に変えると激速というか、以前はこれくらい速かったはず。しかも壁面のムラもない。

ただし、TeamRenderを使う際にはイラディアンスマップ(旧)は仕様上使えないとのこで・・・

ちなみに両方の画像ともAOを併用してます。


ブールの交差したエッジだけにベベル

2014-10-09 00:05:06 | Cinema4D設定、操作

R16のリリース当時、英語のヘルプにこういう記述があるのを見つけたんですが、意味がわかりませんでした。つうか、文字読むの面倒だったので読んでませんでした。

ブールの子の2つの立方体の交差した部分のエッジにのみべベルデフォーマがかかってる状態です。

日本語ヘルプがダウンロード出来るようになったので、早速見てみると・・・

↑これ、最初読んだときは、やっぱり意味がわからなかったんですが、

「交差した部分のエッジを記録した選択範囲タグが内部的に作られていて、どこにも表示されてないけど、その名前は「I」(大文字のi)だから、べベルデフォーマの属性マネージャで「オプション」パラメータグループ(タブ)の「選択範囲」の欄に「I」を入力せよ。ブールの属性で「交差エッジを選択」もチェックしとけよ。」

ってことなんだなってわかって、早速やってみました。

はい、できましたぁ。「I」はintersectionsのことなんですな。