fix: fix blender 4.2 mesh issue.
- fix issue that blender 4.2 lost use_auto_smooth and calc_split_normals. (it almost works but not perfect. still need more debugging) - remove depracted material blend_mode. use modern one instead. (the modern setting make me consufes but it works)
This commit is contained in:
parent
aa602a7bb8
commit
6940428b88
@ -537,8 +537,6 @@ def _rail_creator_wrapper(fct_poly_cret: typing.Callable[[bmesh.types.BMesh], No
|
||||
bm.free()
|
||||
|
||||
# setup smooth for mesh
|
||||
mesh.use_auto_smooth = True
|
||||
mesh.auto_smooth_angle = math.radians(50)
|
||||
mesh.shade_smooth()
|
||||
|
||||
# create object and assoc with it
|
||||
|
@ -403,7 +403,14 @@ def apply_to_blender_material(mtl: bpy.types.Material):
|
||||
|
||||
# set some alpha data
|
||||
mtl.use_backface_culling = not rawdata.mEnableTwoSided
|
||||
mtl.blend_method = 'BLEND' if rawdata.mEnableAlphaBlend else 'OPAQUE'
|
||||
if rawdata.mEnableAlphaBlend:
|
||||
# In old format: mtl.blend_method = 'BLEND'
|
||||
mtl.surface_render_method = 'BLENDED'
|
||||
mtl.use_raytrace_refraction = True
|
||||
else:
|
||||
# In old format: mtl.blend_method = 'OPAQUE'
|
||||
mtl.surface_render_method = 'DITHERED'
|
||||
mtl.use_raytrace_refraction = False
|
||||
|
||||
# set texture
|
||||
if rawdata.mTexture is not None:
|
||||
|
@ -157,7 +157,6 @@ class MeshReader():
|
||||
# triangulate temp mesh
|
||||
if self.is_valid():
|
||||
self.__triangulate_mesh()
|
||||
self.__mAssocMesh.calc_normals_split()
|
||||
|
||||
def is_valid(self) -> bool:
|
||||
return self.__mAssocMesh is not None
|
||||
@ -171,7 +170,6 @@ class MeshReader():
|
||||
def dispose(self) -> None:
|
||||
if self.is_valid():
|
||||
# reset mesh
|
||||
self.__mAssocMesh.free_normals_split()
|
||||
self.__mAssocMesh = None
|
||||
|
||||
def get_vertex_position_count(self) -> int:
|
||||
@ -203,10 +201,10 @@ class MeshReader():
|
||||
raise UTIL_functions.BBPException('try to call an invalid MeshReader.')
|
||||
|
||||
cache: UTIL_virtools_types.VxVector3 = UTIL_virtools_types.VxVector3()
|
||||
for nml in self.__mAssocMesh.loops:
|
||||
cache.x = nml.normal.x
|
||||
cache.y = nml.normal.y
|
||||
cache.z = nml.normal.z
|
||||
for nml in self.__mAssocMesh.corner_normals:
|
||||
cache.x = nml.vector.x
|
||||
cache.y = nml.vector.y
|
||||
cache.z = nml.vector.z
|
||||
yield cache
|
||||
|
||||
def get_vertex_uv_count(self) -> int:
|
||||
@ -446,8 +444,6 @@ class MeshWriter():
|
||||
self.__mAssocMesh.polygons.add(len(self.__mFaceVertexCount))
|
||||
# create uv layer
|
||||
self.__mAssocMesh.uv_layers.new(do_init = False)
|
||||
# split normals, it is IMPORTANT
|
||||
self.__mAssocMesh.create_normals_split()
|
||||
|
||||
# add vertex position data
|
||||
self.__mAssocMesh.vertices.foreach_set('co', self.__mVertexPos)
|
||||
@ -500,8 +496,6 @@ class MeshWriter():
|
||||
self.__mAssocMesh.normals_split_custom_set(
|
||||
tuple(_nest_custom_split_normal(loops_normals))
|
||||
)
|
||||
# enable auto smooth. it is IMPORTANT
|
||||
self.__mAssocMesh.use_auto_smooth = True
|
||||
|
||||
def __clear_mesh(self):
|
||||
if not self.is_valid():
|
||||
|
Loading…
Reference in New Issue
Block a user