2023年3月31日金曜日

球表面 分布の球体

aaa
import bpy
import math


zion_collection_name = "球分布 大きくなる 600flame"

# コレクションを作成する
col = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(col)



import bpy
import math


zion_collection_name = "球分布 小さくなる 600flame"

# コレクションを作成する
col = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(col)






import bpy
import math
import random
from mathutils import Vector

# 速度を指定する
zion_speed = 1.0

# 目標位置を指定する
zion_target = Vector((0, -60, 0))

# 平行移動するかどうかを指定する
parallel = False

# 平行移動量を指定する
parallel_distance = Vector((300, 300, 300))  # ここを変更する

# 球体を作成する関数
def create_sphere(location, radius):
    bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)


# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location, speed):
    distance = (target_location - obj.location).length
    duration = distance / speed
    for frame in range(start_frame, end_frame+1):
        t = (frame - start_frame) / duration
        obj.location = obj.location.lerp(target_location, t)
        obj.keyframe_insert(data_path="location", frame=frame)


# 球体を作成する
spheres = []
for i in range(100):
    phi = random.uniform(0, math.pi)
    theta = random.uniform(0, 2*math.pi)
    radius = 30
    x = radius * math.sin(phi) * math.cos(theta)
    y = radius * math.sin(phi) * math.sin(theta)
    z = radius * math.cos(phi)
    location = Vector((x, y, z))
    create_sphere(location, 1.0)
    obj = bpy.context.active_object
    spheres.append(obj)




# アニメーションを設定する
for i, sphere in enumerate(spheres):
    start_frame = 1
    end_frame = 250
    location = sphere.location
    if parallel:
        target_location = location + parallel_distance
    else:
        # 表面に沿って動くように設定する
        normal = location.normalized()
        target_location = location + normal * 60  # 半径30の球体表面に沿って動く
    distance = (target_location - location).length
    speed = zion_speed / distance
    set_animation(sphere, start_frame, end_frame, target_location, speed)



















反転

import bpy
from mathutils import Vector

# 速度を指定する
back_speed = 1.0

# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location, speed):
    distance = (target_location - obj.location).length
    duration = distance / speed
    for frame in range(start_frame, end_frame+1):
        t = (frame - start_frame) / duration
        obj.location = obj.location.lerp(target_location, t)
        obj.keyframe_insert(data_path="location", frame=frame)

# 球体の中心位置
center = Vector((0, 0, 0))

# アニメーションを設定する
for sphere in bpy.data.objects:
    if sphere.type == 'MESH' and sphere.name.startswith('Sphere'):
        start_frame = 600
        end_frame = 1
        location = sphere.location
        target_location = center
        distance = (target_location - location).length
        speed = back_speed / distance
        set_animation(sphere, start_frame, end_frame, target_location, speed)





改造テスト





import bpy
from mathutils import Vector

# 速度を指定する
back_speed = 1.0

# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location, speed):
    distance = (target_location - obj.location).length
    duration = distance / speed
    for frame in range(start_frame, end_frame+1):
        t = (frame - start_frame) / duration
        obj.location = obj.location.lerp(target_location, t)
        obj.keyframe_insert(data_path="location", frame=frame)

# 球体の中心位置
center = Vector((0, 0, 0))

# アニメーションを設定する
for sphere in bpy.data.objects:
    if sphere.type == 'MESH' and sphere.name.startswith('Sphere'):
        start_frame = 1
        end_frame = 600
        location = sphere.location
        target_location = center
        distance = (target_location - location).length
        speed = back_speed / distance
        set_animation(sphere, start_frame, end_frame, target_location, speed)





反転設定 テスト中


import bpy
import math
import random
from mathutils import Vector

# 速度を指定する
zion_speed = 1.0

# 目標位置を指定する
zion_target = Vector((0, -60, 0))

# 平行移動するかどうかを指定する
parallel = False

# 平行移動量を指定する
parallel_distance = Vector((300, 300, 300))  # ここを変更する

# 球体を作成する関数
def create_sphere(location, radius):
    bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)






import bpy
from mathutils import Vector

# 速度を指定する
back_speed = 1.0

# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location, speed):
    distance = (target_location - obj.location).length
    duration = distance / speed
    for frame in range(start_frame, end_frame+1):
        t = (frame - start_frame) / duration
        obj.location = obj.location.lerp(target_location, t)
        obj.keyframe_insert(data_path="location", frame=frame)

# 球体の中心位置
center = Vector((0, 0, 0))

# アニメーションを逆転して設定する
for sphere in bpy.data.objects:
    if sphere.type == 'MESH' and sphere.name.startswith('Sphere'):
        start_frame = 1
        end_frame = 600
        location = sphere.location
        target_location = center
        distance = (target_location - location).length
        speed = back_speed / distance
        set_animation(sphere, start_frame, end_frame, target_location, speed)














ファイル名を reverse_animation.py などとして保存し、Blenderのスクリプトエディタなどで実行してください。


Error



import bpy
from mathutils import Vector

# 速度を指定する
back_speed = 1.0

# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location, speed):
    distance = (target_location - obj.location).length
    duration = distance / speed
    for frame in range(start_frame, end_frame+1):
        t = (frame - start_frame) / duration
        obj.location = obj.location.lerp(target_location, t)
        obj.keyframe_insert(data_path="location", frame=frame)

# 球体の中心位置
center = Vector((0, 0, 0))

# アニメーションを設定する
for sphere in bpy.data.objects:
    if sphere.type == 'MESH' and sphere.name.startswith('Sphere'):
        start_frame = 1
        end_frame = 600
        location = sphere.location
        target_location = center
        distance = (target_location - location).length
        speed = back_speed / distance
        set_animation(sphere, start_frame, end_frame, target_location, speed)










bbb
togetter.com/t/c2022meetzionad
togetter.com/t/b2022meetzionad




twitter 新着検索 Dürer & 測距儀


aaa

# オブジェクトに名前を付ける
bpy.context.object.name = "球分布 大きくなる"







bbb
twitter zionadchat
twitter に追い出されたら 連絡先は Gettr https://gettr.com/user/zionadchat
twitter サブアカウント https://twitter.com/2022zionad

old page いいい
new page いいい

目次 2022の目次 単純トリック hatena zionadchat
いいいいいいいい

202304220 thu 1333

aaa 下書き Dürer & 測距儀2022c085 連番 014 正三角形 6つの詳細 aaa ティコ・ブラーエ氏 2023年04月19日 下書き Dürer & 測距儀2022c085 連番 014 正三角形 6つの詳細  ゴルフ場 ...