やさいのつくりかた.

Babylon.js / procedural vegetables

3Dの野菜は、
数式から育つ。

このサイトで扱う23本のプログラムは、3Dモデルも写真も1枚も読み込みません。 点の座標を計算で並べ、模様をその場で描き、光り方を数値で決める。 絵を描く技術ではなく、形を組み立てる技術です。中学・高校の数学で追えるところから順に見ていきます。

準備中 0 頂点
読み方HOW TO

このサイトの使い方

上から順でも、気になる章からでも

各章にはその場で動かせる実験がついています。スライダーを動かすと、 文章で説明していることが目の前で起きます。読むより先に、まず動かしてください。 むずかしい言葉は用語集にまとめてあります。

  • Aとにかく動かしたい人00 まず動かしてみる → 好きな章の実験だけ触る
  • B順番に理解したい人01 → 02 → 03 …… と上から。04章(かたち)と05章(面と法線)がこの教材の背骨です。
  • Cコードを読みたい人図鑑でファイルを選ぶ → 対応する章に戻る
  • Dもう一周した人第II部(12〜16)へ。ブロッコリー・ロマネスコの3本は、第I部のやり方では作れません
必要な数学。 sin・cos(三角関数)、座標、比例、それに少しだけベクトル(内積・外積)。 高校1年までの内容でだいたい追えます。出てきたところで、そのつど説明します。
第I部PART I

1個の野菜をつくる(00〜11)

1本の .js ファイルを、上から順にほどいていく構成

00START

まず動かしてみる

インストールなし。ブラウザだけで23本を動かす手順。まずここから。

01CONFIG

「作る」と「読み込む」はどう違うのか

モデルファイルを読み込まずに、実行した瞬間に座標を計算で作る。その利点と代償。

02Rng

同じ種からは、同じ野菜が生える

Math.random() を使わない理由。「種」を渡すと毎回同じ結果になる乱数を自分で書く。

03Noise

でこぼこを、なめらかな乱数で作る

となり合う値がなめらかにつながる乱数。重ねると自然物の模様になる(fBm)。

04Profile

横顔を1本描けば、立体になる

横顔の折れ線を1本描いて軸のまわりに回す。この教材の背骨にあたる章。

05Mesh

三角形の向きと、面の傾き

3Dモデルの正体は座標の配列と三角形の番号表。裏返ると立体が消える理由。

06Texture

模様も、その場で描く

UVで立体と画像を対応させ、模様を1ピクセルずつ計算で描く。色・光り方・凹凸の3枚。

07PBR

「濡れている」「粉をふいている」を数値で言う

「濡れている」「粉をふいている」を数値で書く。粗さ・クリアコート・透け。

08Havok

盛り付けは、手で置かない

ざるへの盛り付けは手で置かない。重力と摩擦だけ与えて物理エンジンに任せる。

09Parts

部品を作って、組み合わせる

粒・ひだ・房。部品を1個作って何百個並べ、合体させる。重なりはほぐす。

10Spine

曲がったものを作る

バナナやきゅうりは曲がっている。先に軸を決め、断面を軸に垂直に置いていく。

11Scene

見せ方を決める(光と露出)

同じ野菜でも光で別物になる。IBL・影・露出・トーンマッピング。

第II部PART II

構造そのものをつくる(12〜16)

回転体でも掃引でも作れない野菜が持ち込んだ、5つの技術

第I部の11章は、ファイルの構成(CONFIG → Rng → Noise → Profile → TextureLab → 本体 …)に そのまま対応していました。ところが、あとから加わったブロッコリー・カリフラワー・ロマネスコは、 その並びに収まりません。横顔(Profile)が無く、テクスチャも1枚も使わないからです。 形は再帰で生え、色は頂点そのものが持っています。 第II部は、層ではなく「作り方の種類」で立てた5章です。

資料REFERENCE

23本を引く

ファイルから逆に読みたいとき