Я новичок в Blender, и мне сложно понять его ключевые концепции. Я использую Blender 2.82 и работаю со сценариями Python. Мой проект состоит из использования Python для следующих действий:
- Слегка переместить объект.
- Сделать снимок с помощью камеры 1, камеры 2, камеры 3 и камеры 4.
- Повторите.
У меня был сценарий, который это делал. Однако я хотел сохранять положение моего объекта (сферы) каждый раз, когда я менял его в течение l oop в анимации, чтобы позже я мог увидеть, что я сделал. При попытке вставить ключевые кадры для анимации в мой l oop кажется, что моя сфера не двигалась. Ниже мой код. Когда я удаляю строки, включающие frame_set
и keyframe_insert
, моя сфера перемещается, как я могу видеть по визуализированным изображениям. Я думаю, что сбиваю с толку какое-то понятие… Любая помощь будет принята с благодарностью. Цель этого состоит в том, чтобы получить изображения, которые я бы получил с четырех камер, размещенных вокруг движущегося объекта, чтобы имитировать систему мокап. Почему при вставке ключевого кадра изменяются все визуализируемые изображения?
import bpy, bgl, blf,sys
import numpy as np
from bpy import data, ops, props, types, context
cameraNames=''
# Loop all command line arguments and try to find "cameras=east" or similar
for arg in sys.argv:
words=arg.split('=')
if ( words[0] == 'cameras'):
cameraNames = words[1]
sceneKey = bpy.data.scenes.keys()[0]
# Loop all objects and try to find Cameras
bpy.data.scenes[sceneKey].render.image_settings.file_format = 'JPEG'
bpy.data.scenes[sceneKey].cycles.max_bounces=12
bpy.data.scenes[sceneKey].render.tile_x=8
bpy.data.scenes[sceneKey].render.tile_y=8
bpy.data.scenes[sceneKey].cycles.samples = 16
bpy.data.scenes[sceneKey].cycles.caustics_reflective = False
bpy.data.scenes[sceneKey].cycles.caustics_refractive = False
bpy.data.objects['Sphere'].location=[1,1,1]
frame_num=0
for i in range(0,2): #nframes
bpy.context.scene.frame_set(frame_num)
for obj in bpy.data.objects:
# Find cameras that match cameraNames
if ( obj.type =='CAMERA') and ( cameraNames == '' or obj.name.find(cameraNames) != -1) :
# Set Scenes camera and output filename
bpy.data.scenes[sceneKey].camera = obj
bpy.data.scenes[sceneKey].render.filepath = '//'+obj.name+"_"+str(i)
# Render Scene and store the scene
bpy.ops.render.render( write_still=True )
bpy.data.objects['Sphere'].keyframe_insert(data_path="location",index=-1)
frame_num+=1
bpy.data.objects['Sphere'].location=[2,2,1]