42 lines
2.0 KiB
Python
42 lines
2.0 KiB
Python
"""Render identical poses/cameras for SOMA baseline and hand-only trial."""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import bpy
|
|
from mathutils import Vector
|
|
|
|
folder = Path(sys.argv[sys.argv.index('--')+1]).resolve()
|
|
for label, path in [('baseline', folder/'kimodo/Walk/baked.glb'), ('hand_cleanup', folder/'audit/hand_cleanup/Walk.glb')]:
|
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
bpy.ops.import_scene.gltf(filepath=str(path))
|
|
scene = bpy.context.scene
|
|
# glTF seconds are imported at Blender's current 24 fps; frame 24 = 1 second.
|
|
scene.frame_set(24)
|
|
scene.render.engine = 'CYCLES'
|
|
scene.cycles.samples = 12
|
|
scene.render.resolution_x, scene.render.resolution_y = 512, 640
|
|
scene.render.resolution_percentage = 100
|
|
scene.view_settings.view_transform = 'AgX'
|
|
world = bpy.data.worlds.new('AuditWorld')
|
|
world.use_nodes = True
|
|
world.node_tree.nodes['Background'].inputs[0].default_value = (.35, .38, .42, 1)
|
|
world.node_tree.nodes['Background'].inputs[1].default_value = .7
|
|
scene.world = world
|
|
center = Vector((0, 0, .56))
|
|
cam = bpy.data.objects.new('AuditCamera', bpy.data.cameras.new('AuditCamera'))
|
|
scene.collection.objects.link(cam)
|
|
scene.camera = cam
|
|
cam.data.type = 'ORTHO'
|
|
cam.data.ortho_scale = 1.43
|
|
for direction, power in [((2, 3, 4), 180), ((-3, -1, 2), 120)]:
|
|
light = bpy.data.objects.new('AuditLight', bpy.data.lights.new('AuditLight', 'AREA'))
|
|
scene.collection.objects.link(light)
|
|
light.location = center + Vector(direction)
|
|
light.rotation_euler = (center-light.location).to_track_quat('-Z', 'Y').to_euler()
|
|
light.data.energy, light.data.size = power, 3
|
|
for view, direction in [('side', (3, 0, .1)), ('back', (0, -3, .1))]:
|
|
cam.location = center + Vector(direction)
|
|
cam.rotation_euler = (center-cam.location).to_track_quat('-Z', 'Y').to_euler()
|
|
scene.render.filepath = str(folder/'audit'/f'{label}_{view}.png')
|
|
bpy.ops.render.render(write_still=True)
|