FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
UnrealEnginePython/examples/fbx_curves_extractor.py at master · luw2l/UnrealEnginePython · GitHub
luw2l
UnrealEnginePython
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
UnrealEnginePython
/
examples
/
fbx_curves_extractor.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
73 lines (62 loc) · 2.84 KB
Breadcrumbs
UnrealEnginePython
/
examples
/
fbx_curves_extractor.py
Copy path
File metadata and controls
73 lines (62 loc) · 2.84 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from
unreal_engine
import
FbxManager
,
FbxIOSettings
,
FbxImporter
,
FbxScene
import
unreal_engine
as
ue
class
FbxCurvesExtractor
:
def
__init__
(
self
,
filename
):
self
.
manager
=
FbxManager
()
io_settings
=
FbxIOSettings
(
self
.
manager
,
'IOSROOT'
)
self
.
manager
.
set_io_settings
(
io_settings
)
importer
=
FbxImporter
(
self
.
manager
,
'importer'
)
importer
.
initialize
(
filename
,
io_settings
)
self
.
scene
=
FbxScene
(
self
.
manager
,
'scene'
)
importer
.
_import
(
self
.
scene
)
def
get_objects_by_class
(
self
,
name
):
objects
=
[]
for
i
in
range
(
0
,
self
.
scene
.
get_src_object_count
()):
obj
=
self
.
scene
.
get_src_object
(
i
)
if
obj
.
get_class_name
()
==
name
:
objects
.
append
(
obj
)
return
objects
def
get_members_by_class
(
self
,
parent
,
name
):
members
=
[]
for
i
in
range
(
0
,
parent
.
get_member_count
()):
member
=
parent
.
get_member
(
i
)
if
member
.
get_class_name
()
==
name
:
members
.
append
(
member
)
return
members
def
get_anim_stacks
(
self
):
return
self
.
get_objects_by_class
(
'FbxAnimStack'
)
def
get_anim_layers
(
self
,
stack
):
return
self
.
get_members_by_class
(
stack
,
'FbxAnimLayer'
)
def
get_properties
(
self
,
obj
):
prop
=
obj
.
get_first_property
()
while
prop
:
yield
prop
prop
=
obj
.
get_next_property
(
prop
)
def
get_anim_curves
(
self
,
layer
):
curves
=
[]
for
i
in
range
(
0
,
self
.
scene
.
get_src_object_count
()):
obj
=
self
.
scene
.
get_src_object
(
i
)
# retrieve object properties
for
prop
in
self
.
get_properties
(
obj
):
curve_node
=
prop
.
get_curve_node
(
layer
)
if
not
curve_node
:
continue
channels
=
[]
for
chan_num
in
range
(
0
,
curve_node
.
get_channels_count
()):
# always get the first curve
curve
=
curve_node
.
get_curve
(
chan_num
,
0
)
if
not
curve
:
continue
keys
=
[]
for
key_id
in
range
(
0
,
curve
.
key_get_count
()):
keys
.
append
((
curve
.
key_get_seconds
(
key_id
),
curve
.
key_get_value
(
key_id
)))
channels
.
append
({
'name'
:
curve_node
.
get_channel_name
(
chan_num
),
'keys'
:
keys
})
curves
.
append
({
'object'
:
obj
.
get_name
(),
'class'
:
obj
.
get_class_name
(),
'property'
:
prop
.
get_name
(),
'channels'
:
channels
})
return
curves
filename
=
'C:/Users/roberto/Downloads/testCam/testCam.fbx'
#filename = 'C:/Users/Roberto/Desktop/Kaiju_Assets/Slicer/Animations/slicer_attack.fbx'
extractor
=
FbxCurvesExtractor
(
filename
)
for
stack
in
extractor
.
get_anim_stacks
():
for
layer
in
extractor
.
get_anim_layers
(
stack
):
for
curve
in
extractor
.
get_anim_curves
(
layer
):
ue
.
log
(
curve
)
Back
|
FazBrowse Home
|
New Git URL