[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