ブレンダー+ Python
Blenderの組み込みのPythonスクリプトは、この種のことには最適です。

Pythonコンソールを開き、以下を貼り付けます。
import bpy
import random
def asteroid():
bpy.ops.mesh.primitive_ico_sphere_add()
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.faces_shade_smooth()
bpy.ops.mesh.select_mode(type='VERT')
bpy.ops.mesh.select_random()
bpy.ops.transform.resize(value=(random.uniform(1.1,1.4),random.uniform(1.1,1.4),random.uniform(1.1,1.4)))
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.subdivide(smoothness=1)
bpy.ops.mesh.select_random()
bpy.ops.transform.resize(value=(random.uniform(1.05,1.15),random.uniform(1.05,1.15),random.uniform(1.05,1.15)))
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.subdivide(smoothness=1)
bpy.ops.mesh.select_random()
bpy.ops.transform.resize(value=(random.uniform(0.92,1.05),random.uniform(0.92,1.05),random.uniform(0.92,1.05)))
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.subdivide(smoothness=1)
stretch = random.uniform(0.9,1.5)
bpy.ops.transform.resize(value=(stretch,1,1))
bpy.ops.transform.rotate(value=(random.uniform(-1.57,1.57)), axis=(random.uniform(-1.57,1.57),random.uniform(-1.57,1.57),random.uniform(-1.57,1.57)))
bpy.ops.object.mode_set(mode='OBJECT')
asteroid()
次に、3Dカーソルの位置に小惑星が作成されます。

別の小惑星が欲しいですか?3Dカーソルを別の場所に移動してから、asteroid()
もう一度Pythonコンソールに入力します(または↑Enter、最後に入力した行を繰り返すだけです)。
プラスチックの塊ではなく、宇宙の岩のように見えるようにするには、適切なマテリアルを適用する必要があります。次の手順資料は非常にうまく機能します。大理石のテクスチャで#635C5B
、の拡散色を使用しました#8D887F
。

使い方:
- まず、単純な二十面体(
bpy.ops.mesh.primitive_ico_sphere_add()
)を作成します。
- 編集モードに入り(
bpy.ops.object.mode_set(mode='EDIT')
)、スムーズシェーディングを適用して、個々のファセットが互いにブレンドされるようにします(bpy.ops.mesh.faces_shade_smooth()
)。
- オブジェクトの頂点のランダムなサブセットを選択します(
bpy.ops.mesh.select_random()
)。
- X、Y、Z方向にランダムにスケーリングします(
bpy.ops.transform.resize()
)。
- オブジェクト全体を選択し(
bpy.ops.mesh.select_all(action='SELECT')
)、滑らかなサブディビジョンを適用して、変形したオブジェクト全体を滑らかに補間することで新しい頂点を追加します(bpy.ops.mesh.subdivide(smoothness=1)
)。
- (手順3〜5をさらに数回繰り返します。)
- オブジェクトをX方向にストレッチして、球形を少し小さくします(
bpy.ops.transform.resize(value=(stretch,1,1))
)
- ランダム回転変換を適用する(
bpy.ops.transform.rotate()
)
- 最後に、編集モードを終了し、オブジェクトを選択したままにします(
bpy.ops.object.mode_set(mode='OBJECT')
)。
その他の例:



