# ランダム配置 球体表面に36個 球体
import bpy
import math
import random
# 大きい球体の情報
zion_big_sphere_name = "Center Sphere" # 大きい球体の名前
zion_big_sphere_radius = 2.0 # 大きい球体の半径
zion_big_sphere_location = (0, 0, 0) # 大きい球体の位置
zion_big_sphere_rotation_speed = 600 # 1回転するのに要するフレーム数
zion_big_sphere_rotation_direction = 1 # 回転方向(1: 反時計回り、-1: 時計回り)
# 小さい球体の情報
zion_small_sphere_name = "Small Sphere" # 小さい球体の名前
zion_small_sphere_count = 36 # 小さい球体の数
zion_small_sphere_radius = 0.1 # 小さい球体の半径
# 大きい球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=zion_big_sphere_radius, location=zion_big_sphere_location)
# 大きい球体を変数に格納
zion_big_sphere = bpy.context.object
zion_big_sphere.name = zion_big_sphere_name
# 小さい球体を作成
for i in range(zion_small_sphere_count):
# 球面座標を計算
theta = random.uniform(0, 2 * math.pi)
phi = random.uniform(0, math.pi)
x = zion_big_sphere_radius * math.sin(phi) * math.cos(theta)
y = zion_big_sphere_radius * math.sin(phi) * math.sin(theta)
z = zion_big_sphere_radius * math.cos(phi)
location = (x, y, z)
# 小さい球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=zion_small_sphere_radius, location=location)
# 小さい球体を大きい球体の子オブジェクトにする
zion_small_sphere = bpy.context.object
zion_small_sphere.name = zion_small_sphere_name + "." + str(i)
zion_small_sphere.parent = zion_big_sphere
# アニメーションを作成
frame_count = zion_big_sphere_rotation_speed
for i in range(frame_count):
# 大きい球体を回転させる
zion_big_sphere.rotation_euler.rotate_axis("Z", zion_big_sphere_rotation_direction * 2 * math.pi / frame_count)
# 小さい球体を大きい球体の表面に沿って移動させる
for j in range(zion_small_sphere_count):
small_sphere_name = zion_small_sphere_name + "." + str(j)
small_sphere = bpy.data.objects[small_sphere_name]
sphere_phi = math.acos(small_sphere.location[2] / zion_big_sphere_radius)
sphere_theta = math.atan2(small_sphere.location[1], small_sphere.location[0]) + zion
import bpy
from math import radians
# 定義:数値調整
zion_radius = 2.0
zion_center_sphere = (0, 0, 0)
zion_kaiten_frame = 300
zion_name = "表面回転球体"
# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=zion_radius, location=zion_center_sphere)
# オブジェクト名を変更
bpy.context.object.name = zion_name
# 回転アニメーションを設定
bpy.context.scene.frame_end = zion_kaiten_frame
rotation_degrees = 360.0 / zion_kaiten_frame
for i in range(zion_kaiten_frame):
bpy.context.scene.frame_set(i)
bpy.context.object.rotation_euler[2] = radians(rotation_degrees * i)
bpy.ops.anim.keyframe_insert(type='Rotation')
この球体表面を中心にする
半径 0.1 の球体を 36 個 ランダムに配置する
このボールの作成個数を調整できるように
zion_small_ball_number =36
オブジェクト名は
zion_small_ball_name = "small_ball_01"
から small_ball_ の連番にする
定義 数字調整は
スクリプトの先頭に書き出す
small_ball_01
small_ball_02
この2つは RGBT で 赤色
残りの色は 青色 ちょっと白が入ってる色にする
球体を作成
球体半径 zion_radius = 2.0
球体 中心位置 zion_center_spher = (0,0,0)
球体を回転させる
frame 600 で 1回転
zion_kaiten_frame =300