본문 바로가기

Blender

[Blender]지정한 오브젝트의 애니메이션 모두 자동 저장하기

NFT용 다수의 애니메이션을 렌더링하는 것을 다루는 아래 영상 중 Scripting 워크스페이스에서 간단히 파이썬 코딩하고 실행하는 법을 Blender 3.0에서 따라하기. 

Cube의 이름을 'RenderMe'라고 명명하고 좌우로 움직이는 40프레임 애니메이션의 이름을 'XposMove', 전후로 움직이는 40프레임 애니메이션의 이름을 'YposMove'이라 명명한 뒤 Scripting 워크스페이스에서 파이썬 코드를 넣어 지정한 오브젝트(이경우 'RenderMe' 큐브)의 애니메이션들을 지정한 프레임 구간만큼 지정한 폴더에 자동으로 png 파일로 저장하는 스크립트를 만들어 테스트. 실행(상단 플레이 버튼을 누르거나 Alt-P)해 보니 잘 된다. 

아래 스크립트의 경우 모든 오브젝트의 렌더를 hide 시키기에 라이트도 모두 가려져 어둡게 나온다. 해서 World Properties-Surface-Color에서 색을 좀 밝게한 뒤 실행시키다. 

사용할 경우엔 아래 코드 중 if 다음 "RenderMe" 대신 자신이 렌더할 오브젝트 명을 적어주고 

directory = f" 와 {obj.name} 사이에 자신 컴의 저장할 폴더명으로 바꿔줘야한다. 

 

- 많은 애니메이션들을 자동 렌더시킬 경우 편리하게 사용 가능해 보이는 팁이다. 

 

파이썬 코드

import bpy
import os

os.system("cls") #clear screens

for obj in bpy.data.objects:
    #print(obj.name)
    obj.hide_render = True

for obj in bpy.data.objects:
    obj.hide_render = False
    for act in bpy.data.actions:
        if "RenderMe" in obj.name:
           
            if not obj.animation_data:
                obj.animation_data_create()
           
            obj.animation_data.action = act
           
            bpy.context.scene.frame_start = 1
            bpy.context.scene.frame_end = 40
           
            directory = f"C://zRender//{obj.name}//{act.name}//"
            if not os.path.exists(directory):
                os.makedirs(directory)
               
            bpy.context.scene.render.filepath = f"{directory}{obj.name}-{act.name}-f"
            bpy.ops.render.render(animation = True)
    obj.hide_render = True

 

'Imphenzia Live - How I made 10000 animated characters - NFT special(1:09:39/Imphenzia)'
https://www.youtube.com/watch?v=-PYTtWhjEmw

 

- YouTube

 

www.youtube.com

22/02/20 일