import bpy
import math
R = 10 # トーラス半径(チューブの中心からトーラスの中心までの距離)
r = 0.2 # チューブ半径(断面半径)
# トーラスのメッシュを定義する
vertices = []
edges = []
faces = []
for u in range(0, 21):
theta = u * 2*math.pi / 20
for v in range(0, 21):
phi = v * 2*math.pi / 20
x = (R + r*math.cos(phi)) * math.cos(theta)
y = (R + r*math.cos(phi)) * math.sin(theta)
z = r*math.sin(phi)
vertices.append((x, y, z))
if u < 20 and v < 20:
a = u*21 + v
b = u*21 + v + 1
c = (u+1)*21 + v
d = (u+1)*21 + v + 1
faces.append((a, b, d, c))
# メッシュオブジェクトを作成してシーンに追加する
mesh = bpy.data.meshes.new(name="Torus")
mesh.from_pydata(vertices, edges, faces)
object = bpy.data.objects.new(name="Torus", object_data=mesh)
bpy.context.scene.collection.objects.link(object)
import bpy
import math
# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=1)
# アニメーション用にオブジェクトを取得
obj = bpy.context.active_object
# 1回転あたりのフレーム数を計算
frames_per_rotation = bpy.context.scene.render.fps * 10
# アニメーションを作成
for i in range(frames_per_rotation):
angle = 2 * math.pi * i / frames_per_rotation
x = 10 * math.cos(angle)
y = 10 * math.sin(angle)
z = 0
obj.location = (x, y, z)
obj.keyframe_insert(data_path="location", frame=i+1)
# アニメーションを繰り返す設定
animation = obj.animation_data.action
animation.use_cyclic_offset = True
animation.frame_range = (1, frames_per_rotation)
bbb
togetter.com/t/c2022meetzionad
togetter.com/t/b2022meetzionad
twitter 新着検索 Dürer & 測距儀
aaa
bbb
twitter zionadchat
twitter に追い出されたら 連絡先は Gettr https://gettr.com/user/zionadchat
twitter サブアカウント https://twitter.com/2022zionad
old page いいい
new page いいい
目次 2022の目次 単純トリック hatena zionadchat
いいいいいいいい