[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4678] trunk/py/scripts/addons/ io_scene_ms3d: workaround for [#36443] Vertex to UV index doesn' t match with 2.68a
Alexander N
alpha-beta-release at gmx.net
Sun Aug 18 00:21:17 CEST 2013
Revision: 4678
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4678
Author: beta-tester
Date: 2013-08-17 22:21:17 +0000 (Sat, 17 Aug 2013)
Log Message:
-----------
workaround for [#36443] Vertex to UV index doesn't match with 2.68a
- until the <BMesh>.faces.new(..) is scrambling the vertices order (input -> output), i use the workaround, that build a de-scramble dictionary.
i still thing it is a bug in blender 2.68.
- got rid of unneeded option 'io_scene_ms3d.set_sence_to_metric', Ms3dSetSceneToMetricOperator, set_sence_to_metric
Modified Paths:
--------------
trunk/py/scripts/addons/io_scene_ms3d/__init__.py
trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py
trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py
trunk/py/scripts/addons/io_scene_ms3d/ms3d_utils.py
Modified: trunk/py/scripts/addons/io_scene_ms3d/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/__init__.py 2013-08-14 07:29:11 UTC (rev 4677)
+++ trunk/py/scripts/addons/io_scene_ms3d/__init__.py 2013-08-17 22:21:17 UTC (rev 4678)
@@ -23,7 +23,7 @@
'description': "Import / Export MilkShape3D MS3D files"\
" (conform with MilkShape3D v1.8.4)",
'author': "Alexander Nussbaumer",
- 'version': (0, 99, 1),
+ 'version': (0, 99, 2),
'blender': (2, 66, 0),
'location': "File > Import & File > Export",
'warning': "",
Modified: trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py 2013-08-14 07:29:11 UTC (rev 4677)
+++ trunk/py/scripts/addons/io_scene_ms3d/ms3d_import.py 2013-08-17 22:21:17 UTC (rev 4678)
@@ -363,6 +363,7 @@
# create all vertices
for ms3d_vertex_index, ms3d_vertex in enumerate(ms3d_model.vertices):
bmv = bm.verts.new(self.geometry_correction(ms3d_vertex.vertex))
+ bmv.index = ms3d_vertex_index
if layer_extra and ms3d_vertex.vertex_ex_object and \
(isinstance(ms3d_vertex.vertex_ex_object, Ms3dVertexEx2) \
@@ -526,6 +527,7 @@
ms3d_model.vertices.append(
ms3d_model.vertices[vert_index])
bmv_new = bm.verts.new(bmv.co)
+ bmv_new.index = -vert_index
bmv_new.normal = blender_normal
bmv_new[layer_extra] = bmv[layer_extra]
vert_index = length_verts
@@ -557,6 +559,7 @@
bmf_normal.normalize()
bmf = bm.faces.get(bmv_list)
+
if bmf is not None:
if self.report and self.options_verbose in Ms3dUi.VERBOSE_NORMAL:
self.report(
@@ -566,16 +569,38 @@
continue
bmf = bm.faces.new(bmv_list)
+ bmf.index = ms3d_triangle_index
bmf.normal = bmf_normal
+ ##########################
+ ## WORKAROUND
+ # [#36443] Vertex to UV index doesn't match with 2.68a
+ # https://projects.blender.org/tracker/index.php?func=detail&aid=36443&group_id=9&atid=498
+ #
+ scrambled_order = dict()
+ for face_vertex_index, face_bm_vertex in enumerate(bmf.verts):
+ scrambled_order[face_bm_vertex] = face_vertex_index
# blender uv custom data per "face vertex"
- bmf.loops[0][layer_uv].uv = Vector(
+ bmf.loops[scrambled_order[bmv_list[0]]][layer_uv].uv = Vector(
(ms3d_triangle.s[0], 1.0 - ms3d_triangle.t[0]))
- bmf.loops[1][layer_uv].uv = Vector(
+ bmf.loops[scrambled_order[bmv_list[1]]][layer_uv].uv = Vector(
(ms3d_triangle.s[1], 1.0 - ms3d_triangle.t[1]))
- bmf.loops[2][layer_uv].uv = Vector(
+ bmf.loops[scrambled_order[bmv_list[2]]][layer_uv].uv = Vector(
(ms3d_triangle.s[2], 1.0 - ms3d_triangle.t[2]))
+ scrambled_order = None
+ #
+ ## WORKAROUND
+ ##########################
+ ## blender uv custom data per "face vertex"
+ #bmf.loops[0][layer_uv].uv = Vector(
+ # (ms3d_triangle.s[0], 1.0 - ms3d_triangle.t[0]))
+ #bmf.loops[1][layer_uv].uv = Vector(
+ # (ms3d_triangle.s[1], 1.0 - ms3d_triangle.t[1]))
+ #bmf.loops[2][layer_uv].uv = Vector(
+ # (ms3d_triangle.s[2], 1.0 - ms3d_triangle.t[2]))
+ ##########################
+
# ms3d custom data per "mesh face"
bmf[layer_smoothing_group] = ms3d_triangle.smoothing_group
Modified: trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py 2013-08-14 07:29:11 UTC (rev 4677)
+++ trunk/py/scripts/addons/io_scene_ms3d/ms3d_ui.py 2013-08-17 22:21:17 UTC (rev 4678)
@@ -46,7 +46,6 @@
from io_scene_ms3d.ms3d_utils import (
enable_edit_mode,
get_edge_split_modifier_add_if,
- set_sence_to_metric,
)
@@ -1706,36 +1705,7 @@
###############################################################################
-class Ms3dSetSceneToMetricOperator(Operator):
- """ . """
- bl_idname = 'io_scene_ms3d.set_sence_to_metric'
- bl_label = ms3d_str['BL_LABEL_SET_SCENE_TO_METRIC']
- bl_description = ms3d_str['BL_DESC_SET_SCENE_TO_METRIC']
-
-
- #
- @classmethod
- def poll(cls, blender_context):
- return True
-
- # entrypoint for option
- def execute(self, blender_context):
- return self.set_sence_to_metric(blender_context)
-
- # entrypoint for option via UI
- def invoke(self, blender_context, event):
- return blender_context.window_manager.invoke_props_dialog(self)
-
-
- ###########################################################################
- def set_sence_to_metric(self, blender_context):
- set_sence_to_metric(blender_context)
- return {"FINISHED"}
-
-
-###############################################################################
def register():
- register_class(Ms3dSetSceneToMetricOperator)
register_class(Ms3dGroupProperties)
register_class(Ms3dModelProperties)
register_class(Ms3dArmatureProperties)
@@ -1754,7 +1724,6 @@
unregister_class(Ms3dArmatureProperties)
unregister_class(Ms3dModelProperties)
unregister_class(Ms3dGroupProperties)
- unregister_class(Ms3dSetSceneToMetricOperator)
def inject_properties():
Mesh.ms3d = PointerProperty(type=Ms3dModelProperties)
Modified: trunk/py/scripts/addons/io_scene_ms3d/ms3d_utils.py
===================================================================
--- trunk/py/scripts/addons/io_scene_ms3d/ms3d_utils.py 2013-08-14 07:29:11 UTC (rev 4677)
+++ trunk/py/scripts/addons/io_scene_ms3d/ms3d_utils.py 2013-08-17 22:21:17 UTC (rev 4678)
@@ -178,42 +178,8 @@
###############################################################################
-def set_sence_to_metric(blender_context):
- try:
- # set metrics
- blender_context.scene.unit_settings.system = 'METRIC'
- blender_context.scene.unit_settings.system_rotation = 'DEGREES'
- blender_context.scene.unit_settings.scale_length = 0.001 # 1.0mm
- blender_context.scene.unit_settings.use_separate = False
- blender_context.tool_settings.normal_size = 1.0 # 1.0mm
- # set all 3D views to texture shaded
- # and set up the clipping
- for screen in blender_context.blend_data.screens:
- for area in screen.areas:
- if (area.type != 'VIEW_3D'):
- continue
-
- for space in area.spaces:
- if (space.type != 'VIEW_3D'):
- continue
-
- #space.viewport_shade = 'SOLID'
- space.show_textured_solid = True
- space.clip_start = 0.1 # 0.1mm
- space.clip_end = 1000000.0 # 1km
- #screen.scene.game_settings.material_mode = 'MULTITEXTURE'
-
- except Exception:
- raise
-
- else:
- pass
-
-
###############################################################################
-
-###############################################################################
#234567890123456789012345678901234567890123456789012345678901234567890123456789
#--------1---------2---------3---------4---------5---------6---------7---------
# ##### END OF FILE #####
More information about the Bf-extensions-cvs
mailing list