prompt: フラクタルあるいはLシステムを利用し3次元木(できたら葉っぱ付き)を複数生成し描画するコードをhtmlとJavaScriptでかけ。見る方向はマウスで制御してください。
L-システムを使った3次元フラクタル木の生成器を作成しました!
主な機能
L-システム(Lindenmayer System)
4種類の異なる木のパターン(基本木、複雑な木、茂った木、柳の木)
文字列の置換ルールで木の構造を定義
反復回数で複雑さを制御
3次元表現
Three.jsを使用した本格的な3D描画
円筒形の枝で立体的な木を表現
枝の太さは深度に応じて変化
インタラクティブ機能
マウスドラッグで視点回転
マウスホイールでズーム
リアルタイムパラメータ調整(反復回数、角度、長さ比率)
視覚効果
風で揺れる葉っぱアニメーション
影とライティング
複数の木を森のように配置
葉っぱの表示/非表示切替
操作方法
マウスで視点を自由に回転させて木を観察
左上のコントロールパネルでパラメータを調整
「新しい森を生成」ボタンで異なる配置の森を作成
「L-システム変更」ボタンで異なる木の形状パターンに切替
各木は微妙に異なる角度とランダム要素で生成されるため、自然な森の雰囲気を演出しています。
葉っぱの大幅増量
密度向上: 各葉っぱ位置に5-8枚の葉っぱを配置(従来は3枚)
配置拡張: 枝の先端だけでなく、枝の途中にも葉っぱを配置
確率向上: 葉っぱ生成確率を30%から60%に増加
バリエーション: 3種類の異なる緑色マテリアルでより自然な見た目
サイズ変化: 各葉っぱのサイズにランダムなバリエーション
広範囲散布: より広い範囲に葉っぱを散らして自然な茂み感を演出
木の本数制御
スライダー追加: 1本から150本まで自由に指定可能
グリッド配置: 木の数に応じて自動的にグリッド配置
ランダム要素: 各木の位置、角度、サイズ、比率にバリエーション
スケール調整: 木の数が多い場合も見やすいよう自動的にカメラ距離を調整
パフォーマンス最適化
効率的配置: グリッドベースの配置で重複を避ける
地面拡張: より大きな地面で多数の木に対応
ズーム範囲拡張: より広範囲のズームに対応
これで茂った葉っぱの美しい森を150本まで生成できます。木の本数を変更すると即座に反映され、大規模な森の景観も楽しめます!
ウィンドウサイズ固定
700x450ピクセルに固定
レスポンシブ機能を削除してシンプルに
地面の大幅強化
草原: メインの緑の地面
土壌: 下層に茶色の土を配置
岩石: ランダムに配置された20個の石
草クラスター: 50本の小さな草で自然感をアップ
影の追加: 岩が地面に影を落とす
コントロールパネルの最適化
縦長・コンパクト: 幅120pxの縦長レイアウト
小さなフォント: 9-11pxで画面を占有しない
ボタン縮小: 「森を生成」「葉っぱ切替」「木変更」に短縮
透明度向上: 背景透明度を上げて木が見やすく
インターフェース改善
情報パネル簡潔化: 「マウス:回転」など短縮表示
レイアウト調整: 左上と左下にコンパクトに配置
これで木々がよく見える状態で、豊かな地形の上に美しい森を楽しめます!