グラフィクス

Blender Cycles “Lamborghini Gallardo LP570-4″作成 Part2:Material

こんにちは、画像の使いすぎでメディアを占領してしまい申し訳なくなってるmoumouです。
前回のモデリング編に続いて、Part2:マテリアル編を書いていきたいと思います。

応用が効きそうなことだけ書いているので、だんだんランボルギーニ関係なくなってます(笑)

 

このような流れで書いています。

  1. 全体の設計&モデリング編(+ドローン動画)
  2. マテリアル設定 (←今ここ)
  3. ライティング& 環境設定
  4. コンポジットによる実写合成

今回の目次

  1. フレネル効果
  2. バンプマップを利用したノード構成
  3. 綺麗な床のマテリアル

cyclesを扱ううえで知っておくと良いことを書いていきます。

続きを読む

Blender Cycles “Lamborghini Gallardo LP570-4″作成 Part1:Modeling (+ ドローン動画)

こんにちは、moumouです。

今更ですがBlender Cycles講習会、楽しんでもらえたみたいでよかったです。

今回は、みなさんご存じ超高級車”ランボルギーニ“をBlender Cyclesにて作成しました。

 

春休みには作り終えてたモデルなのですが、記事書くのがめんどかった,いや, ある程度長くなる記事だったので,  今更ですが連載記事として投稿したいと思います。

連載記事ということで、以下のような流れに分けて書いていきます。

  1. 全体の設計&モデリング編(←今ここ)
  2. マテリアル設定
  3. ライティング& 環境設定
  4. コンポジットによる実写合成

Blender経験者なら分かるように書いていくので、説明記事みたいになるかもしれません。

基本的に役に立ったことをメインで書いています。

今回の目次

今回のモデリング編は3ページの構成です。最後はオマケです。

このページ:  3Dモデル,モデリングの流れ
2ページ目: 小ネタ, モデリングの際に役立ったこと
3ページ目: ドローンお土産動画

 では早速、Part1.モデリング編を書いていきたいと思います。が、ぱっと見てさっと記事閉じる人向けに(笑)、まずはじめに今回作成した画像と3Dモデルをひとつ載せておきますね。

3Dモデル

↓が3Dモデルです。▶を押して約15秒後3Dモデルを見ることができます。マウス操作で360°回転,拡大できます。また、右下の設定ボタンでワイヤフレームを見たりMatCapで見たりできます。

Lamborghini gallardo lp570-4
by moumou
on Sketchfab

………………………….

続きを読む

反応拡散系シミュレーション

Simulation 1

\[\frac{\partial{u}}{\partial{t}}=20 Hill(u,0.2,2)/v – 80U +1 \]

\[\frac{\partial{v}}{\partial{t}}=20 (u-v) \]

Simulation 2

\[\frac{\partial{u}}{\partial{t}}=20 Hill(u,0.2,2)/v – 80U +1 \]

\[\frac{\partial{v}}{\partial{t}}=30 (u-v) \]

Simulation 3

\[\frac{\partial{u}}{ \partial{t}}=0.5 \Delta u +20 Hill(u,0.2,2)/v – 80U +1 \]

\[\frac{\partial{v}}{ \partial{t}}=5.0 \Delta u +30 (u-v) \]

(dx=0.1,dt=0.0005)

 

samneiluSAMUNEIRU

Zバッファを可視化するプログラムをUnityで作った.Zバッファを可視化するプログラムをUnityで作った.

これは,Z-Bufferを可視化するプログラムです.

Z-Bufferとは,簡単に言いますと,距離センサーのことです.

カメラからどれくらい離れてるかをしめすんですね.

このZ-Bufferを可視化すると次のようになりました.

キャプチャ.JPGasdfasfasdfafサムネイル

フラクタルギャラリー2

フラクタルギャラリー1」の続き。

要旨

ST法により等角写像を繰り返し用いた3Dフラクタルを実装できる。

等角写像を用いる順番、種類、回数を変えることにより、様々な3Dフラクタルを実装できる。

描画結果

f5f4f3f2f1f

最後の奴は、何かの膜で包まれているようにも見える。

フラクタル・ギャラリー1

f
サムネイル

前回の記事もそうだったように、レイトレーシングの手法の一つにSphereTracing法というものがある。

このSphereTracing法の距離関数を上手く設定することで、3Dフラクタルを現実的な速度で書く事ができます。

3Dフラクタル描画の問題点

 

ff
(図1)開発中のフラクタル・エディタ(2Dver)

一般的に、GPUを使って2Dフラクタルを実装する際は、フラクタルを描画したい閉区間をピクセルにラスタライズして、各点がそのフラクタルの内部にあるか外部にあるか確かめねばならない。(図1)

これを常識的に拡張すれば、当然3Dのピクセル、すなわちボクセルの集合体として閉空間をラスタライズし、フラクタル内部の点かどうか確かめ適当な射影行列で2Dにマッピングするという考えに至るだろう。

しかし、これには問題がある。それは計算量の問題である。2Dフラクタルの計算量は時間計算量・空間計算量ともにO(n^2)であり、これを拡張した3DフラクタルではO(n^3)となっている。これは非常に大きい。

距離関数の設計

そこで、SphereTracing法である。すなわち、ある点が与えられた時、その点から最も近いフラクタル立体の距離がわかれば、ST法を用いて計算量O(n^2)で2Dマッピングができるというわけだ。

詳細な距離関数の設計は他所(Hypercomplex Iterations,Distance Estimation and Higher Dimensional Fractals, Yumei et al.)に譲るとして、フラクタルの構成の際に、すべてが等角写像であれば、距離関数d(r)は

d(r) > sd(r) = 0.5rlog(f(r))/abs(grad(f(r)))

で計算できることが知られている。ここで等号ではなく不等号が使われているのは、距離関数の近似を用いているためである。ST法ではsum(n=0…∞)d(r_n)=sum(n=0…∞)sd(r_n)が成り立つとき、dをsdで代用できる(自明である)。

これを用いて、実際にフラクタルを実装してみた結果が、次のようである。

描画結果

これらは、現在開発中の「フラクタル・エディタ(3Dver)」の出力結果である。解像度がころころ変わっているのは気にしないで欲しい。「フラクタル・エディタ(3Dver)」はリアルタイム式(Unity)と高解像式(CUDA)の二種類を開発している。しかし、やっていることは変わらないのであんまり意味は無い。しいて言えば、CUDA式のほうが拡張性が高いといったところである。現在、フラクタル・エディタに進化計算システムを追加しようとしている。

imagee5

mandelbox_mmm

ff

メタボール(3種類目)を実装

今まで、1回目2回目、と、ことなる実装方法でメタボールを実装しましたが、また違った手法がありました。

そこで実装してみたいと思います。

1回目は、かなり有名なMC法を元にした方法で、ラスタライザで表示をしました。

2回目は、レイトレーシングのために、MC法とは異なる手法で実装するために、BezierClipping法を使って計算しました。

そして今回はSphere Tracing法を使って実装してみました。次の画像です。

METASPHERE

Sphere Tracing法は、レイトレーシングを実装する方法の一つですが、SphereTracing法で使われる距離関数を上手く設計することで、メタボールなどの物体同士のなめらかな結合を表現することができます。

以下、動画版(Youtube)です。

レイトレーシングを実装v3

レイトレーシング全部自前実装v1 ,v2 の続き。

ベジエクリッピングによるメタボールの実装をしました。

メタボールの混合密度関数の等値面上の解をベジエクリッピング法で求めています。
この方法では以前の方法のようなメタボールをマーチングキューブ法でポリゴン近似する必要がないというメリットがあります。

以下画像。

ここでは3つのメタボールがいい感じに融合してますね。

meta_ray_good

 

 

レイトレーシングを実装(v2)

これの続き。

材質を追加しました(ランバート拡散反射)

・結果

image

画像の床部分と大きな球が拡散反射の材質を持っている。

色付き球と床の接触部分付近や大きな球に、色が写り込んでいるのがわかりますね。

 

おまけ 模様つき

rtlbt2

おまけ2 twitter動画埋め込みテスト