-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrender_face_poses.gd
More file actions
55 lines (49 loc) · 1.76 KB
/
Copy pathrender_face_poses.gd
File metadata and controls
55 lines (49 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
## Visual test: face closeups of baked poses applied through the facial controller.
## Run windowed: godot --resolution 360x360 -s tests/render_face_poses.gd
extends SceneTree
const POSES := ["Neutral", "Happy", "Angry", "Surprised", "Blink", "EyeLeft", "EyeRight", "EyeUp", "EyeDown"]
func _init() -> void:
call_deferred("_run")
func _run() -> void:
var library := SKPartLibrary.new()
library.scan()
var colors := SKColorEngine.new()
colors.setup()
var recipe := SKRecipe.new()
recipe.parts.append({ "name": "SK_HUMN_BASE_01_01HEAD_HU01" })
var character := SKCharacterBuilder.new(library, colors).build(recipe)
if character == null:
printerr("build failed")
quit(1)
return
root.add_child(character)
var controller := SidekickFacialController.new()
controller.name = "FacialController"
character.add_child(controller)
var light := DirectionalLight3D.new()
light.rotation_degrees = Vector3(-30, 20, 0)
light.light_energy = 1.2
root.add_child(light)
var environment := WorldEnvironment.new()
var env := Environment.new()
env.background_mode = Environment.BG_COLOR
env.background_color = Color(0.2, 0.22, 0.25)
env.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR
env.ambient_light_color = Color(0.7, 0.7, 0.75)
env.ambient_light_energy = 0.6
environment.environment = env
root.add_child(environment)
var camera := Camera3D.new()
camera.look_at_from_position(Vector3(0, 1.62, 0.45), Vector3(0, 1.6, 0))
camera.fov = 30
root.add_child(camera)
camera.make_current()
SKFacePoses.bake()
for pose_name in POSES:
controller.apply_pose(SKFacePoses.get_pose(pose_name))
controller.apply()
for i in 6:
await process_frame
root.get_viewport().get_texture().get_image().save_png("user://face_%s.png" % pose_name.to_lower())
print("saved")
quit(0)