Máy xay sinh tố + Python
Kịch bản Python tích hợp sẵn của Blender là hoàn hảo cho loại điều này.
Mở bảng điều khiển Python và dán vào phần sau:
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()
Một tiểu hành tinh sau đó sẽ được tạo ở vị trí con trỏ 3D của bạn:
Muốn một tiểu hành tinh khác? Di chuyển con trỏ 3D sang một nơi khác và sau đó nhập asteroid()
lại vào bảng điều khiển Python (hoặc chỉ ↑Enterđể lặp lại dòng cuối cùng được nhập).
Để làm cho nó trông giống như một mảnh đá không gian và ít giống như một đốm nhựa, bạn cần phải áp dụng một vật liệu phù hợp. Các tài liệu thủ tục sau đây hoạt động khá tốt. Tôi đã sử dụng một màu khuếch tán của #635C5B
, và #8D887F
trong kết cấu đá cẩm thạch.
Làm thế nào nó hoạt động:
- Bắt đầu bằng cách tạo một icosahedron đơn giản (
bpy.ops.mesh.primitive_ico_sphere_add()
).
- Vào chế độ chỉnh sửa (
bpy.ops.object.mode_set(mode='EDIT')
) và áp dụng bóng mượt để các mặt riêng lẻ hòa trộn với nhau ( bpy.ops.mesh.faces_shade_smooth()
).
- Chọn một tập hợp con ngẫu nhiên của các đỉnh của đối tượng (
bpy.ops.mesh.select_random()
).
- Chia tỷ lệ chúng ngẫu nhiên theo các hướng X, Y và Z (
bpy.ops.transform.resize()
).
- Chọn toàn bộ đối tượng (
bpy.ops.mesh.select_all(action='SELECT')
) và áp dụng phân chia mịn để thêm các đỉnh mới bằng cách nội suy trơn tru trên đối tượng bị biến dạng ( bpy.ops.mesh.subdivide(smoothness=1)
).
- (Lặp lại các bước 3 Ném5 một vài lần nữa.)
- Kéo dài đối tượng theo hướng X để làm cho nó ít hình cầu hơn (
bpy.ops.transform.resize(value=(stretch,1,1))
)
- Áp dụng một biến đổi xoay ngẫu nhiên (
bpy.ops.transform.rotate()
)
- Cuối cùng, thoát chế độ chỉnh sửa và để đối tượng được chọn (
bpy.ops.object.mode_set(mode='OBJECT')
).
Ví dụ khác: