Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
blender-addons-contrib
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
blender
blender-addons-contrib
Commits
12720e90
Commit
12720e90
authored
11 years ago
by
Oscurart Eugenio Pignataro
Browse files
Options
Downloads
Patches
Plain Diff
Code Cleanup
parent
2062d0f2
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
oscurart_mesh_cache_tools.py
+59
-66
59 additions, 66 deletions
oscurart_mesh_cache_tools.py
with
59 additions
and
66 deletions
oscurart_mesh_cache_tools.py
+
59
−
66
View file @
12720e90
...
...
@@ -35,56 +35,55 @@ class OscEPc2ExporterPanel(bpy.types.Panel):
def
draw
(
self
,
context
):
layout
=
self
.
layout
obj
=
context
.
object
row
=
layout
.
column
(
align
=
1
)
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_folder
"
,
text
=
"
Folder
"
)
row
.
operator
(
"
import_shape.pc2_copy
"
,
icon
=
'
FILESEL
'
,
text
=
"
Set Filepath
"
)
obj
=
context
.
object
row
=
layout
.
column
(
align
=
1
)
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_folder
"
,
text
=
"
Folder
"
)
row
.
operator
(
"
import_shape.pc2_copy
"
,
icon
=
'
FILESEL
'
,
text
=
"
Set Filepath
"
)
row
=
layout
.
box
().
column
(
align
=
1
)
row
.
label
(
"
EXPORTER:
"
)
row
.
operator
(
"
group.linked_group_to_local
"
,
text
=
"
Linked To Local
"
,
icon
=
"
LINKED
"
)
row
.
operator
(
"
object.remove_subsurf_modifier
"
,
text
=
"
Remove Gen Modifiers
"
,
icon
=
"
MOD_SUBSURF
"
)
row
.
operator
(
"
export_shape.pc2_selection
"
,
text
=
"
Export!
"
,
icon
=
"
POSE_DATA
"
)
row
.
operator
(
"
group.linked_group_to_local
"
,
text
=
"
Linked To Local
"
,
icon
=
"
LINKED
"
)
row
.
operator
(
"
object.remove_subsurf_modifier
"
,
text
=
"
Remove Gen Modifiers
"
,
icon
=
"
MOD_SUBSURF
"
)
row
.
operator
(
"
export_shape.pc2_selection
"
,
text
=
"
Export!
"
,
icon
=
"
POSE_DATA
"
)
#row.prop(bpy.context.scene,"muu_pc2_rotx", text= "RotX90")
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_world_space
"
,
text
=
"
World Space
"
)
#row.prop(bpy.context.scene,"muu_pc2_modifiers", text="Apply Modifiers")
#row.prop(bpy.context.scene,"muu_pc2_subsurf", text="Turn Off SubSurf")
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_world_space
"
,
text
=
"
World Space
"
)
#row.prop(bpy.context.scene,"muu_pc2_modifiers", text="Apply Modifiers")
#row.prop(bpy.context.scene,"muu_pc2_subsurf", text="Turn Off SubSurf")
row
=
layout
.
column
(
align
=
1
)
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_start
"
,
text
=
"
Frame Start
"
)
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_end
"
,
text
=
"
Frame End
"
)
row
.
prop_search
(
bpy
.
context
.
scene
,
"
muu_pc2_group
"
,
bpy
.
data
,
"
groups
"
,
text
=
""
)
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_start
"
,
text
=
"
Frame Start
"
)
row
.
prop
(
bpy
.
context
.
scene
,
"
muu_pc2_end
"
,
text
=
"
Frame End
"
)
row
.
prop_search
(
bpy
.
context
.
scene
,
"
muu_pc2_group
"
,
bpy
.
data
,
"
groups
"
,
text
=
""
)
row
=
layout
.
box
().
column
(
align
=
1
)
row
.
label
(
"
IMPORTER:
"
)
row
.
operator
(
"
import_shape.pc2_selection
"
,
text
=
"
Import
"
,
icon
=
"
POSE_DATA
"
)
row
.
operator
(
"
import_shape.pc2_selection
"
,
text
=
"
Import
"
,
icon
=
"
POSE_DATA
"
)
def
OscFuncExportPc2
(
self
):
start
=
bpy
.
context
.
scene
.
muu_pc2_start
end
=
bpy
.
context
.
scene
.
muu_pc2_end
folderpath
=
bpy
.
context
.
scene
.
muu_pc2_folder
for
ob
in
bpy
.
data
.
groups
[
bpy
.
context
.
scene
.
muu_pc2_group
].
objects
[:]:
pc2list
=
[]
if
ob
.
type
==
"
MESH
"
:
with
open
(
"
%s/%s.pc2
"
%
(
os
.
path
.
normpath
(
folderpath
),
ob
.
name
),
mode
=
"
wb
"
)
as
file
:
with
open
(
"
%s/%s.pc2
"
%
(
os
.
path
.
normpath
(
folderpath
),
ob
.
name
),
mode
=
"
wb
"
)
as
file
:
#encabezado
headerFormat
=
'
<12siiffi
'
headerStr
=
struct
.
pack
(
headerFormat
,
b
'
POINTCACHE2
\0
'
,
1
,
len
(
ob
.
data
.
vertices
[:]),
0
,
1.0
,
(
end
+
1
)
-
start
)
file
.
write
(
headerStr
)
headerFormat
=
'
<12siiffi
'
headerStr
=
struct
.
pack
(
headerFormat
,
b
'
POINTCACHE2
\0
'
,
1
,
len
(
ob
.
data
.
vertices
[:]),
0
,
1.0
,
(
end
+
1
)
-
start
)
file
.
write
(
headerStr
)
#bakeado
obmat
=
ob
.
matrix_world
for
frame
in
range
((
end
+
1
)
-
start
):
print
(
"
Percentage of %s bake: %s
"
%
(
ob
.
name
,
frame
/
end
*
100
))
bpy
.
context
.
scene
.
frame_set
(
frame
)
obmat
=
ob
.
matrix_world
for
frame
in
range
((
end
+
1
)
-
start
):
print
(
"
Percentage of %s bake: %s
"
%
(
ob
.
name
,
frame
/
end
*
100
))
bpy
.
context
.
scene
.
frame_set
(
frame
)
me
=
bpy
.
data
.
meshes
.
new_from_object
(
scene
=
bpy
.
context
.
scene
,
object
=
ob
,
apply_modifiers
=
True
,
settings
=
"
RENDER
"
,
calc_tessface
=
True
,
calc_undeformed
=
False
)
calc_undeformed
=
False
)
#rotate
if
bpy
.
context
.
scene
.
muu_pc2_world_space
:
if
bpy
.
context
.
scene
.
muu_pc2_world_space
:
me
.
transform
(
obmat
)
me
.
calc_normals
()
#creo archivo
...
...
@@ -92,29 +91,29 @@ def OscFuncExportPc2(self):
pc2list
.
append
((
float
(
vert
.
co
[
0
]),
float
(
vert
.
co
[
1
]),
float
(
vert
.
co
[
2
])
float
(
vert
.
co
[
2
])
))
#dreno mesh
bpy
.
data
.
meshes
.
remove
(
me
)
#dreno mesh
bpy
.
data
.
meshes
.
remove
(
me
)
print
(
"
%s Bake finished!
\n
Awaiting Compile file...
"
%
(
ob
.
name
))
# write file
for
i
,
frame
in
enumerate
(
pc2list
):
for
i
,
frame
in
enumerate
(
pc2list
):
#print("Percentage of %s Compiled file: %s " % ( ob.name, i*100/len(pc2list)))
file
.
write
(
struct
.
pack
(
"
<3f
"
,
*
frame
))
print
(
"
%s File Compiled Write finished!
"
%
(
ob
.
name
))
file
.
write
(
struct
.
pack
(
"
<3f
"
,
*
frame
))
print
(
"
%s File Compiled Write finished!
"
%
(
ob
.
name
))
del
(
pc2list
)
print
(
"
Bake Finished!
"
)
print
(
"
Bake Finished!
"
)
class
OscPc2ExporterBatch
(
bpy
.
types
.
Operator
):
bl_idname
=
"
export_shape.pc2_selection
"
bl_label
=
"
Export pc2 for selected Objects
"
bl_description
=
"
Export pc2 for selected Objects
"
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
def
execute
(
self
,
context
):
OscFuncExportPc2
(
self
)
return
{
'
FINISHED
'
}
...
...
@@ -123,8 +122,8 @@ class OscRemoveSubsurf(bpy.types.Operator):
bl_idname
=
"
object.remove_subsurf_modifier
"
bl_label
=
"
Remove SubSurf Modifier
"
bl_description
=
"
Remove SubSurf Modifier
"
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
def
execute
(
self
,
context
):
GENERATE
=
[
'
MULTIRES
'
,
'
ARRAY
'
,
'
BEVEL
'
,
'
BOOLEAN
'
,
'
BUILD
'
,
'
DECIMATE
'
,
'
MASK
'
,
'
MIRROR
'
,
'
REMESH
'
,
'
SCREW
'
,
'
SKIN
'
,
'
SOLIDIFY
'
,
'
SUBSURF
'
,
'
TRIANGULATE
'
]
for
OBJ
in
bpy
.
data
.
groups
[
bpy
.
context
.
scene
.
muu_pc2_group
].
objects
[:]:
...
...
@@ -138,16 +137,16 @@ class OscPc2iMporterBatch(bpy.types.Operator):
bl_idname
=
"
import_shape.pc2_selection
"
bl_label
=
"
Import pc2 for selected Objects
"
bl_description
=
"
Import pc2 for selected Objects
"
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
def
execute
(
self
,
context
):
for
OBJ
in
bpy
.
context
.
selected_objects
[:]:
MOD
=
OBJ
.
modifiers
.
new
(
"
MeshCache
"
,
'
MESH_CACHE
'
)
MOD
.
filepath
=
"
%s%s%s.pc2
"
%
(
bpy
.
context
.
scene
.
muu_pc2_folder
,
os
.
sep
,
OBJ
.
name
)
MOD
.
cache_format
=
"
PC2
"
MOD
=
OBJ
.
modifiers
.
new
(
"
MeshCache
"
,
'
MESH_CACHE
'
)
MOD
.
filepath
=
"
%s%s%s.pc2
"
%
(
bpy
.
context
.
scene
.
muu_pc2_folder
,
os
.
sep
,
OBJ
.
name
)
MOD
.
cache_format
=
"
PC2
"
MOD
.
forward_axis
=
"
POS_Y
"
MOD
.
up_axis
=
"
POS_Z
"
MOD
.
flip_axis
=
set
(())
MOD
.
flip_axis
=
set
(())
return
{
'
FINISHED
'
}
...
...
@@ -155,42 +154,40 @@ class OscPc2iMporterCopy(bpy.types.Operator):
bl_idname
=
"
import_shape.pc2_copy
"
bl_label
=
"
Copy Filepath
"
bl_description
=
"
Copy Filepath
"
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
def
execute
(
self
,
context
):
bpy
.
context
.
scene
.
muu_pc2_folder
=
str
(
bpy
.
data
.
filepath
.
rpartition
(
os
.
sep
)[
0
])
bpy
.
context
.
scene
.
muu_pc2_folder
=
str
(
bpy
.
data
.
filepath
.
rpartition
(
os
.
sep
)[
0
])
return
{
'
FINISHED
'
}
def
OscLinkedGroupToLocal
():
ACTOBJ
=
bpy
.
context
.
active_object
GROBJS
=
[
ob
for
ob
in
ACTOBJ
.
id_data
.
dupli_group
.
objects
[:]
if
ob
.
type
==
"
MESH
"
]
for
ob
in
ACTOBJ
.
id_data
.
dupli_group
.
objects
[:]:
for
ob
in
ACTOBJ
.
id_data
.
dupli_group
.
objects
[:]:
bpy
.
context
.
scene
.
objects
.
link
(
ob
)
NEWGROUP
=
bpy
.
data
.
groups
.
new
(
"
%s_CLEAN
"
%
(
ACTOBJ
.
name
))
bpy
.
context
.
scene
.
objects
.
unlink
(
ACTOBJ
)
NEWOBJ
=
[]
bpy
.
context
.
scene
.
objects
.
unlink
(
ACTOBJ
)
NEWOBJ
=
[]
for
ob
in
GROBJS
:
NEWGROUP
.
objects
.
link
(
ob
)
NEWOBJ
.
append
(
ob
)
for
ob
in
NEWOBJ
:
if
ob
.
type
==
"
MESH
"
:
NEWGROUP
.
objects
.
link
(
ob
)
NEWOBJ
.
append
(
ob
)
for
ob
in
NEWOBJ
:
if
ob
.
type
==
"
MESH
"
:
if
len
(
ob
.
modifiers
):
for
MODIFIER
in
ob
.
modifiers
[:]:
if
MODIFIER
.
type
==
"
SUBSURF
"
or
MODIFIER
.
type
==
"
MASK
"
:
ob
.
modifiers
.
remove
(
MODIFIER
)
ob
.
modifiers
.
remove
(
MODIFIER
)
class
OscGroupLinkedToLocal
(
bpy
.
types
.
Operator
):
bl_idname
=
"
group.linked_group_to_local
"
bl_label
=
"
Group Linked To Local
"
bl_description
=
"
Group Linked To Local
"
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
bl_options
=
{
'
REGISTER
'
,
'
UNDO
'
}
def
execute
(
self
,
context
):
OscLinkedGroupToLocal
()
return
{
'
FINISHED
'
}
def
register
():
bpy
.
utils
.
register_module
(
__name__
)
...
...
@@ -199,8 +196,4 @@ def unregister():
bpy
.
utils
.
unregister_module
(
__name__
)
if
__name__
==
"
__main__
"
:
register
()
import
bpy
\ No newline at end of file
register
()
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment