[Bf-extensions-cvs] [b12e3dd] master: separated primitives operators for export and import to their own python file.

Maurice Raybaud noreply at git.blender.org
Mon Dec 28 19:02:38 CET 2015


Commit: b12e3ddf816a42492763d33bf910fa4ec6874cc4
Author: Maurice Raybaud
Date:   Mon Dec 28 18:56:41 2015 +0100
Branches: master
https://developer.blender.org/rBAb12e3ddf816a42492763d33bf910fa4ec6874cc4

separated primitives operators for export and import to their own python file.

===================================================================

M	render_povray/__init__.py
M	render_povray/render.py

===================================================================

diff --git a/render_povray/__init__.py b/render_povray/__init__.py
index 74ab979..8723af1 100644
--- a/render_povray/__init__.py
+++ b/render_povray/__init__.py
@@ -36,6 +36,7 @@ if "bpy" in locals():
     import importlib
     importlib.reload(ui)
     importlib.reload(render)
+    importlib.reload(primitives)
     importlib.reload(update_files)
 
 else:
@@ -59,6 +60,7 @@ else:
     from . import (
             ui,
             render,
+            primitives,
             update_files,
             )
 
diff --git a/render_povray/render.py b/render_povray/render.py
index f115a93..bb4bda6 100644
--- a/render_povray/render.py
+++ b/render_povray/render.py
@@ -29,8 +29,7 @@ import random
 import platform#
 import subprocess#
 from bpy.types import(Operator)
-from bpy_extras.io_utils import ImportHelper
-from bpy_extras import object_utils
+
 
 from . import df3 # for smoke rendering
 ##############################SF###########################
@@ -5001,1491 +5000,3 @@ class RenderPovTexturePreview(Operator):
         #tex.extension="CLIP"
         return {'FINISHED'}
         
-#################################POV-Ray specific###############################
-
-# XXX This should really be in a separate file imho (primitives.py eg?)
-
-from bpy.props import (
-        StringProperty,
-        BoolProperty,
-        IntProperty,
-        FloatProperty,
-        FloatVectorProperty,
-        EnumProperty,
-        PointerProperty,
-        CollectionProperty,
-        )
-
-
-def pov_define_mesh(mesh, verts, edges, faces, name, hide_geometry=True):
-    if mesh is None:
-        mesh = bpy.data.meshes.new(name)
-    mesh.from_pydata(verts, edges, faces)
-    mesh.update()
-    mesh.validate(False)  # Set it to True to see debug messages (helps ensure you generate valid geometry).
-    if hide_geometry:
-        mesh.vertices.foreach_set("hide", [True] * len(mesh.vertices))
-        mesh.edges.foreach_set("hide", [True] * len(mesh.edges))
-        mesh.polygons.foreach_set("hide", [True] * len(mesh.polygons))
-    return mesh
-
-
-class POVRAY_OT_lathe_add(bpy.types.Operator):
-    bl_idname = "pov.addlathe"
-    bl_label = "Lathe"
-    bl_options = {'REGISTER','UNDO'}
-    bl_description = "adds lathe"
-
-
-    def execute(self, context):
-        layers=[False]*20
-        layers[0]=True
-        bpy.ops.curve.primitive_bezier_curve_add(location=(0, 0, 0),
-            rotation=(0, 0, 0), layers=layers)
-        ob=context.scene.objects.active
-        ob.name = ob.data.name = "PovLathe"
-        ob.pov.object_as='LATHE' 
-        bpy.ops.object.mode_set(mode='EDIT')
-        self.report({'WARNING'}, "This native POV-Ray primitive "
-                                 "won't have any vertex to show in edit mode")
-        bpy.ops.transform.rotate(value=-pi/2, axis=(0, 0, 1))
-        bpy.ops.object.mode_set(mode='OBJECT')
-        ob.pov.curveshape = "lathe"
-        bpy.ops.object.modifier_add(type='SCREW')
-        bpy.context.object.modifiers["Screw"].axis = 'Y'
-        bpy.context.object.modifiers["Screw"].show_render = False
-        return {'FINISHED'}
-
-
-        
-def pov_superellipsoid_define(context, op, ob):
-
-        if op:
-            mesh = None
-
-            u = op.se_u
-            v = op.se_v
-            n1 = op.se_n1
-            n2 = op.se_n2
-            edit = op.se_edit
-            se_param1 = n2 # op.se_param1
-            se_param2 = n1 # op.se_param2
-            
-        else:
-            assert(ob)
-            mesh = ob.data
-
-            u = ob.pov.se_u
-            v = ob.pov.se_v
-            n1 = ob.pov.se_n1
-            n2 = ob.pov.se_n2
-            edit = ob.pov.se_edit
-            se_param1 = ob.pov.se_param1
-            se_param2 = ob.pov.se_param2
-            
-        verts = []
-        r=1
-        
-        stepSegment=360/v*pi/180
-        stepRing=pi/u
-        angSegment=0
-        angRing=-pi/2
-
-        step=0
-        for ring in range(0,u-1):
-            angRing += stepRing
-            for segment in range(0,v):
-                step += 1
-                angSegment += stepSegment
-                x = r*(abs(cos(angRing))**n1)*(abs(cos(angSegment))**n2)
-                if (cos(angRing) < 0 and cos(angSegment) > 0) or \
-                        (cos(angRing) > 0 and cos(angSegment) < 0):
-                    x = -x
-                y = r*(abs(cos(angRing))**n1)*(abs(sin(angSegment))**n2)
-                if (cos(angRing) < 0 and sin(angSegment) > 0) or \
-                        (cos(angRing) > 0 and sin(angSegment) < 0):
-                    y = -y
-                z = r*(abs(sin(angRing))**n1)
-                if sin(angRing) < 0:
-                    z = -z
-                x = round(x,4)
-                y = round(y,4)
-                z = round(z,4)
-                verts.append((x,y,z))
-        if edit == 'TRIANGLES':
-            verts.append((0,0,1))
-            verts.append((0,0,-1))
-            
-        faces = []
-        
-        for i in range(0,u-2):
-            m=i*v
-            for p in range(0,v):
-                if p < v-1:
-                    face=(m+p,1+m+p,v+1+m+p,v+m+p)
-                if p == v-1:
-                    face=(m+p,m,v+m,v+m+p)
-                faces.append(face)
-        if edit == 'TRIANGLES':
-            indexUp=len(verts)-2
-            indexDown=len(verts)-1
-            indexStartDown=len(verts)-2-v
-            for i in range(0,v):
-                if i < v-1:
-                    face=(indexDown,i,i+1)
-                    faces.append(face)
-                if i == v-1:
-                    face=(indexDown,i,0)
-                    faces.append(face)
-            for i in range(0,v):
-                if i < v-1:
-                    face=(indexUp,i+indexStartDown,i+indexStartDown+1)
-                    faces.append(face)
-                if i == v-1:
-                    face=(indexUp,i+indexStartDown,indexStartDown)
-                    faces.append(face)
-        if edit == 'NGONS':
-            face=[]
-            for i in range(0,v):
-                face.append(i)
-            faces.append(face)
-            face=[]
-            indexUp=len(verts)-1
-            for i in range(0,v):
-                face.append(indexUp-i)
-            faces.append(face)
-        mesh = pov_define_mesh(mesh, verts, [], faces, "SuperEllipsoid")
-
-        if not ob:
-            ob_base = object_utils.object_data_add(context, mesh, operator=None)
-            ob = ob_base.object
-            #engine = context.scene.render.engine what for?
-            ob = context.object
-            ob.name =  ob.data.name = "PovSuperellipsoid"
-            ob.pov.object_as = 'SUPERELLIPSOID'
-            ob.pov.se_param1 = n2
-            ob.pov.se_param2 = n1
-            
-            ob.pov.se_u = u
-            ob.pov.se_v = v
-            ob.pov.se_n1 = n1 
-            ob.pov.se_n2 = n2
-            ob.pov.se_edit = edit        
-
-            bpy.ops.object.mode_set(mode="EDIT")
-            bpy.ops.mesh.hide(unselected=False)
-            bpy.ops.object.mode_set(mode="OBJECT")
-            
-class POVRAY_OT_superellipsoid_add(bpy.types.Operator):
-    bl_idname = "pov.addsuperellipsoid"
-    bl_label = "Add SuperEllipsoid"
-    bl_description = "Create a SuperEllipsoid"
-    bl_options = {'REGISTER', 'UNDO'}
-    COMPAT_ENGINES = {'POVRAY_RENDER'}
-
-    # XXX Keep it in sync with __init__'s RenderPovSettingsConePrimitive
-    #     If someone knows how to define operators' props from a func, I'd be delighted to learn it!
-    se_param1 = FloatProperty(
-            name="Parameter 1",
-            description="",
-            min=0.00, max=10.0, default=0.04)
-
-    se_param2 = FloatProperty(
-            name="Parameter 2",
-            description="",
-            min=0.00, max=10.0, default=0.04)
-            
-    se_u = IntProperty(name = "U-segments",
-                    description = "radial segmentation",
-                    default = 20, min = 4, max = 265)
-    se_v = IntProperty(name = "V-segments",
-                    description = "lateral segmentation",
-                    default = 20, min = 4, max = 265)
-    se_n1 = FloatProperty(name = "Ring manipulator",
-                      description = "Manipulates the shape of the Ring",
-                      default = 1.0, min = 0.01, max = 100.0)
-    se_n2 = FloatProperty(name = "Cross manipulator",
-                      description = "Manipulates the shape of the cross-section",
-                      default = 1.0, min = 0.01, max = 100.0)
-    se_edit = EnumProperty(items=[("NOTHING", "Nothing", ""),
-                                ("NGONS", "N-Gons", ""),
-                                ("TRIANGLES", "Triangles", "")],
-                        name="Fill up and down",
-                        description="",
-                        default='TRIANGLES')
-
-    @classmethod
-    def poll(cls, context):
-        engine = context.scene.render.engine
-        return (engine in cls.COMPAT_ENGINES)
-        
-    def execute(self,context):
-        pov_superellipsoid_define(context, self, None)
-
-        self.report({'WARNING'}, "This native POV-Ray primitive won't have any vertex to show in edit mode")   
-
-        return {'FINISHED'}
-
-class POVRAY_OT_superellipsoid_update(bpy.types.Operator):
-    bl_idname = "pov.superellipsoid_update"
-    bl_label = "Update"
-    bl_description = "Update Superellipsoid"
-    bl_options = {'REGISTER', 'UNDO'}
-    COMPAT_ENGINES = {'POVRAY_RENDER'}
-
-    @classmethod
-    def poll(cls, context):
-        engine = context.scene.render.engine
-        ob = context.object
-        return (ob and ob.data and ob.type == 'MESH' and engine in cls.COMPAT_ENGINES)
-
-    def execute(self, context):
-        bpy.ops.object.mode_set(mode="EDIT")
-        bpy.ops.mesh.reveal()
-        bpy.ops.mesh.select_all(action='SELECT')
-        bpy.ops.mesh.delete(type='VERT')
-        bpy.ops.object.mode_set(mode="OBJECT")
-
-        pov_superellipsoid_define(context, None, context.object)
-
-        return {'FINISHED'}
-
-def createFaces(vertIdx1, vertIdx2, closed=False, flipped=False):
-    faces = []
-    if not vertIdx1 or not vertIdx2:
-        return None
-

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list