Classiclll's Blog

an old boy

3Dタートルグラフィックス - KAME3D???

イメージ 1

ガラクタ置き場に、KAME3D???(3次元タートルグラフィックライブラリー)の例題を3個置きました。


(いずれもマウスの動きに反応します。反応がないときには、アプレットウィンドウをクリックして叩き起こしてね)

だいぶ前に作った二次元版にちょっと手を加えただけでできた。(ここがProce55ingのいいところ)

ソースコードアプレットのページから見れるけど、ちょっとBinTree3Dを例にとって解説。

void setup(){     <-最初に一回だけProce55ingから呼ばれる関数
size(400,300,P3D);   <-窓サイズと3Dモードの設定(Proce55ingの関数)
}
void draw() {     <-フレーム描画ごとにProce55ingから呼ばれる関数
kami(0);         <-黒い色の新しい紙(KAME3Dコマンド)
saisho(200,300,-180);   <-最初の位置(200,300)と向き(-180°=後向)(KAME3Dコマンド)
nibunki(300);       <-長さ300の二分樹を描く(この例題用の関数)
}
void nibunki(float hosuu) {<-長さが(hosuu)の二分樹の描き方(この例題用の関数)
if (hosuu < 3) {     <-もしhosuuがちょびっと(3未満)だったら・・・(Java構文)
mae(hosuu);        <-(線を書きながら)前にhosuu分進む(KAME3Dコマンド)
} else {         <-そうでなければ・・・
migisita(mouseX);     <-マウスX座標°だけ右下方向に傾いて(KAME3Dコマンド)
mae(hosuu*1/3);      <-前にhosuuの三分の一進む(KAME3Dコマンド)
koko();          <-現在の場所と向きを覚える(KAME3Dコマンド)
hidari(mouseY/5);     <-マウスY座標の五分の一°だけ左を向く(KAME3Dコマンド)
nibunki(hosuu*2/3);    <-hosuu*2/3の長さの二分樹を描く(この例題用の関数)
sakki();         <-さっき覚えていた場所と向きに戻る(KAME3Dコマンド)
migi(45);         <-45°だけ右を向く(KAME3Dコマンド)
nibunki(hosuu*3/5);    <-hosuu*3/5の長さの二分樹を描く(この例題用の関数)
}
}

こんだけ

本家Proce55ingのダウンロードページから本体を落として、上の例題のソースコード
後半部分(Turtle Commands以下)をコピペすれば、あなたも3Dデザイナー(かな)