Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
blender-addons
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
Commits
40bf5c24
Commit
40bf5c24
authored
13 years ago
by
John Phan
Browse files
Options
Downloads
Patches
Plain Diff
fixed mesh rebuild. fixed selected smooth face.
parent
c5b55df8
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
io_export_unreal_psk_psa.py
+32
-63
32 additions, 63 deletions
io_export_unreal_psk_psa.py
with
32 additions
and
63 deletions
io_export_unreal_psk_psa.py
+
32
−
63
View file @
40bf5c24
...
...
@@ -1845,14 +1845,10 @@ class OBJECT_OT_add_remove_Collection_Items_UE(bpy.types.Operator):
if
(
len
(
ActionNLA
.
groups
)
==
len
(
BoneNames
))
and
(
nobone
==
len
(
ActionNLA
.
groups
)):
actionsetmatchcount
+=
1
ActionNames
.
append
(
ActionNLA
.
name
)
#print(dir(collection))
#print("collection:",len(collection))
print
(
"
action list check
"
)
for
action
in
ActionNames
:
BfoundAction
=
False
#print("action:",action)
for
c
in
collection
:
#print(c.name)
if
c
.
name
==
action
:
BfoundAction
=
True
break
...
...
@@ -1992,12 +1988,15 @@ class VIEW3D_PT_unrealtools_objectmode(bpy.types.Panel):
entry
=
obj
.
myCollectionUEA
[
obj
.
myCollectionUEA_index
]
layout
.
prop
(
entry
,
"
name
"
)
layout
.
prop
(
entry
,
"
mybool
"
)
#layout.operator(OBJECT_OT_UTSelectedFaceSmooth.bl_idname)
layout
.
operator
(
OBJECT_OT_UTSelectedFaceSmooth
.
bl_idname
)
layout
.
operator
(
OBJECT_OT_UTRebuildMesh
.
bl_idname
)
layout
.
operator
(
OBJECT_OT_MeshClearWeights
.
bl_idname
)
layout
.
operator
(
OBJECT_OT_UTRebuildArmature
.
bl_idname
)
#layout.operator(OBJECT_OT_UTRebuildMesh.bl_idname)
layout
.
operator
(
OBJECT_OT_ToggleConsle
.
bl_idname
)
layout
.
operator
(
OBJECT_OT_DeleteActionSet
.
bl_idname
)
layout
.
operator
(
OBJECT_OT_MeshClearWeights
.
bl_idname
)
layout
.
operator
(
OBJECT_OT_ToggleConsle
.
bl_idname
)
class
OBJECT_OT_UnrealExport
(
bpy
.
types
.
Operator
):
global
exportmessage
...
...
@@ -2052,15 +2051,17 @@ class OBJECT_OT_UTSelectedFaceSmooth(bpy.types.Operator):
for
i
in
bpy
.
context
.
scene
.
objects
:
i
.
select
=
False
#deselect all objects
obj
.
select
=
True
#set current object select
bpy
.
context
.
scene
.
objects
.
active
=
obj
#set active object
for
face
in
obj
.
data
.
tessfaces
:
if
face
.
use_smooth
==
True
:
mesh
=
bmesh
.
new
();
mesh
.
from_mesh
(
obj
.
data
)
for
face
in
mesh
.
faces
:
print
(
dir
(
face
))
if
face
.
smooth
==
True
:
face
.
select
=
True
smoothcount
+=
1
else
:
flatcount
+=
1
face
.
select
=
False
#print("selected:",face.select)
#print(("smooth:",face.use_smooth))
mesh
.
to_mesh
(
obj
.
data
)
bpy
.
context
.
scene
.
update
()
bpy
.
ops
.
object
.
mode_set
(
mode
=
'
EDIT
'
)
print
(
"
Select Smooth Count(s):
"
,
smoothcount
,
"
Flat Count(s):
"
,
flatcount
)
...
...
@@ -2092,7 +2093,7 @@ class OBJECT_OT_DeleteActionSet(bpy.types.Operator):
class
OBJECT_OT_MeshClearWeights
(
bpy
.
types
.
Operator
):
bl_idname
=
"
object.meshclearweights
"
# XXX, name???
bl_label
=
"
Mesh Clear Weights
"
bl_label
=
"
Mesh Clear
Vertex
Weights
"
__doc__
=
"""
Clear selected mesh vertex group weights for the bones. Be sure you unparent the armature
"""
def
invoke
(
self
,
context
,
event
):
...
...
@@ -2195,69 +2196,45 @@ class OBJECT_OT_UTRebuildMesh(bpy.types.Operator):
verts
=
[]
smoothings
=
[]
uvfaces
=
[]
#print(dir(mesh))
print
(
"
creating array build mesh...
"
)
uv_layer
=
mesh
.
uv_textures
.
active
for
face
in
mesh
.
faces
:
mmesh
=
obj
.
to_mesh
(
bpy
.
context
.
scene
,
True
,
'
PREVIEW
'
)
uv_layer
=
mmesh
.
tessface_uv_textures
.
active
for
face
in
mmesh
.
tessfaces
:
smoothings
.
append
(
face
.
use_smooth
)
#smooth or flat in boolean
if
uv_layer
!=
None
:
#check if there texture data exist
faceUV
=
uv_layer
.
data
[
face
.
index
]
#print(len(faceUV.uv))
uvs
=
[]
for
uv
in
faceUV
.
uv
:
#vert = mesh.vertices[videx]
#print("UV:",uv[0],":",uv[1])
uvs
.
append
((
uv
[
0
],
uv
[
1
]))
#print(uvs)
uvfaces
.
append
(
uvs
)
faces
.
append
(
face
.
vertices
[:])
print
((
face
.
vertices
[:]))
faces
.
extend
([(
face
.
vertices
[
0
],
face
.
vertices
[
1
],
face
.
vertices
[
2
],
face
.
vertices
[
3
])])
#vertex positions
for
vertex
in
mesh
.
vertices
:
verts
.
append
(
vertex
.
co
.
to_tuple
())
#vertices weight groups into array
vertGroups
=
{}
#array in strings
for
vgroup
in
obj
.
vertex_groups
:
#print(dir(vgroup))
#print("name:",(vgroup.name),"index:",vgroup.index)
#vertex in index and weight
vlist
=
[]
for
v
in
mesh
.
vertices
:
for
vg
in
v
.
groups
:
if
vg
.
group
==
vgroup
.
index
:
vlist
.
append
((
v
.
index
,
vg
.
weight
))
#print((v.index,vg.weight))
vertGroups
[
vgroup
.
name
]
=
vlist
'''
#Fail for this method
#can
'
t covert the tri face plogyon
for face in mesh.faces:
x = [f for f in face.vertices]
faces.extend(x)
smoothings.append(face.use_smooth)
for vertex in mesh.vertices:
verts.append(vertex.co.to_tuple())
me_ob.vertices.add(len(verts))
me_ob.faces.add(len(faces)//4)
me_ob.vertices.foreach_set(
"
co
"
, unpack_list(verts))
me_ob.faces.foreach_set(
"
vertices_raw
"
, faces)
me_ob.faces.foreach_set(
"
use_smooth
"
, smoothings)
'''
#test dummy mesh
#verts = [(-1,1,0),(1,1,0),(1,-1,0),(-1,-1,0),(0,1,1),(0,-1,1)]
#faces = [(0,1,2,3),(1,2,5,4),(0,3,5,4),(0,1,4),(2,3,5)]
#for f in faces:
#print("face",f)
#for v in verts:
#print("vertex",v)
#me_ob = bpy.data.objects.new("ReBuildMesh",me_ob)
vertGroups
[
vgroup
.
name
]
=
vlist
print
(
"
creating mesh object...
"
)
me_ob
.
from_pydata
(
verts
,
[],
faces
)
me_ob
.
faces
.
foreach_set
(
"
use_smooth
"
,
smoothings
)
#smooth array from face
me_ob
.
update
()
#me_ob.from_pydata(verts, [], faces)
me_ob
.
vertices
.
add
(
len
(
verts
))
me_ob
.
tessfaces
.
add
(
len
(
faces
))
me_ob
.
vertices
.
foreach_set
(
"
co
"
,
unpack_list
(
verts
))
me_ob
.
tessfaces
.
foreach_set
(
"
vertices_raw
"
,
unpack_list
(
faces
))
me_ob
.
tessfaces
.
foreach_set
(
"
use_smooth
"
,
smoothings
)
#smooth array from face
#check if there is uv faces
if
len
(
uvfaces
)
>
0
:
uvtex
=
me_ob
.
uv_textures
.
new
(
name
=
"
retex
"
)
for
i
,
face
in
enumerate
(
me_ob
.
faces
):
uvtex
=
me_ob
.
tessface_
uv_textures
.
new
(
name
=
"
retex
"
)
for
i
,
face
in
enumerate
(
me_ob
.
tess
faces
):
blender_tface
=
uvtex
.
data
[
i
]
#face
mfaceuv
=
uvfaces
[
i
]
if
len
(
mfaceuv
)
==
3
:
...
...
@@ -2270,6 +2247,7 @@ class OBJECT_OT_UTRebuildMesh(bpy.types.Operator):
blender_tface
.
uv3
=
mfaceuv
[
2
];
blender_tface
.
uv4
=
mfaceuv
[
3
];
me_ob
.
update
()
#need to update the information to able to see into the secne
obmesh
=
bpy
.
data
.
objects
.
new
((
"
Re_
"
+
obj
.
name
),
me_ob
)
bpy
.
context
.
scene
.
update
()
#Build tmp materials
...
...
@@ -2278,20 +2256,13 @@ class OBJECT_OT_UTRebuildMesh(bpy.types.Operator):
matdata
=
bpy
.
data
.
materials
.
new
(
materialname
)
me_ob
.
materials
.
append
(
matdata
)
#assign face to material id
for
face
in
mesh
.
faces
:
#print(dir(face))
for
face
in
mesh
.
tessfaces
:
me_ob
.
faces
[
face
.
index
].
material_index
=
face
.
material_index
#vertices weight groups
for
vgroup
in
vertGroups
:
#print("vgroup",vgroup)#name of group
#print(dir(vgroup))
#print(vertGroups[vgroup])
group
=
obmesh
.
vertex_groups
.
new
(
vgroup
)
#print("group index",group.index)
for
v
in
vertGroups
[
vgroup
]:
group
.
add
([
v
[
0
]],
v
[
1
],
'
ADD
'
)
# group.add(array[vertex id],weight,add)
#print("[vertex id, weight]",v) #array (0,0)
#print("[vertex id, weight]",v[0],":",v[1]) #array (0,0)
bpy
.
context
.
scene
.
objects
.
link
(
obmesh
)
print
(
"
Mesh Material Count:
"
,
len
(
me_ob
.
materials
))
matcount
=
0
...
...
@@ -2299,10 +2270,8 @@ class OBJECT_OT_UTRebuildMesh(bpy.types.Operator):
for
mat
in
me_ob
.
materials
:
print
(
"
-Material:
"
,
mat
.
name
,
"
INDEX:
"
,
matcount
)
matcount
+=
1
print
(
""
)
print
(
"
Object Name:
"
,
obmesh
.
name
)
bpy
.
context
.
scene
.
update
()
#bpy.ops.wm.console_toggle()
bselected
=
True
break
if
bselected
:
...
...
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