Trees | Indices | Help |
---|
|
1 # Blender.Metaball module and the Metaball PyType metaball 2 3 """ 4 The Blender.Metaball submodule 5 6 This module provides access to B{Metaball} data in Blender and the elements they contain. 7 8 9 Example:: 10 import Blender 11 mb = Blender.Metaball.New() 12 for i in xrange(20): 13 element= mb.elements.add() 14 element.co = Blender.Mathutils.Vector(i, 0, 0) 15 sce = Blender.Scene.GetCurrent() 16 sce.objects.new(mb) 17 18 19 20 Example:: 21 # Converts the active armature into metaballs 22 from Blender import * 23 def main(): 24 25 scn= Scene.GetCurrent() 26 ob_arm= scn.objects.active 27 if not ob_arm or ob_arm.type!='Armature': 28 Draw.PupMenu('No Armature Selected') 29 return 30 arm= ob_arm.data 31 32 res= Draw.PupFloatInput('res:', 0.2, 0.05, 2.0) 33 if not res: 34 return 35 36 # Make a metaball 37 mb= Metaball.New() 38 mb.wiresize= res 39 40 # Link to the Scene 41 ob_mb = scn.objects.new(ob_mb) 42 ob_arm.sel= 0 43 ob_mb.setMatrix(ob_arm.matrixWorld) 44 45 46 meta_type= 0 # all elemts are ball type 47 meta_stiffness= 2.0 # Volume 48 49 for bone in arm.bones.values(): 50 print bone 51 52 # Find out how many metaballs to add based on bone length, 4 min 53 length= bone.length 54 if length < res: 55 mballs= 4 56 else: 57 mballs= int(length/res) 58 if mballs < 4: 59 mballs = 4 60 61 print 'metaball count', mballs 62 63 # get the bone properties 64 head_rad= bone.headRadius 65 tail_rad= bone.tailRadius 66 67 head_loc= bone.head['ARMATURESPACE'] 68 tail_loc= bone.tail['ARMATURESPACE'] 69 70 71 for i in range(mballs): 72 f= float(i) 73 74 w1= f/mballs # weighting of this position on the bone for rad and loc 75 w2= 1-w1 76 77 loc= head_loc*w1 + tail_loc*w2 78 rad= (head_rad*w1 + tail_rad*w2) * 1.3 79 80 # Add the metaball 81 ml= mb.elements.add() 82 ml.co= loc 83 ml.radius= rad 84 ml.stiffness= meta_stiffness 85 86 87 Window.RedrawAll() 88 89 main() 90 91 @type Types: readonly dictionary 92 @var Types: MeteElement types. 93 - BALL 94 - TUBE 95 - PLANE 96 - ELIPSOID 97 - CUBE 98 99 @type Update: readonly dictionary 100 @var Update: MeteElement types. 101 - ALWAYS 102 - HALFRES 103 - FAST 104 - NEVER 105 106 """ 107 108110 """ 111 Creates a new Metaball. 112 @type name: string 113 @param name: The name of the metaball. If this parameter is not given (or not valid) blender will assign a name to the metaball. 114 @rtype: Blender Metaball 115 @return: The created Metaball. 116 """117119 """ 120 Get the Metaball from Blender. 121 @type name: string 122 @param name: The name of the requested Metaball. 123 @rtype: Blender Metaball or a list of Blender Metaballs 124 @return: It depends on the 'name' parameter: 125 - (name): The Metaball with the given name; 126 - (): A list with all Metaballs in the current scene. 127 """128130 """ 131 The Metaball object 132 =================== 133 This metaball gives access to generic data from all metaballs in Blender. 134 @ivar elements: Element iterator of MetaElemSeq type. 135 @type elements: MetaElemSeq 136 @ivar wiresize: display resolution. 137 Value clamped between 0.05 and 1.0. 138 139 A lower value results in more polygons. 140 @type wiresize: float 141 @ivar rendersize: render resolution. 142 Value clamped between 0.05 and 1.0. 143 144 A lower value results in more polygons. 145 @type rendersize: float 146 @ivar thresh: Threshold setting for this metaball. 147 Value clamped between 0.0 and 5.0. 148 @type thresh: float 149 @ivar materials: List of up to 16 Materials or None types 150 Only the first material of the mother-ball used at the moment. 151 @type materials: list 152 @ivar update: The update method to use for this metaball. 153 @type update: int 154 """ 155162 163 import id_generics 164 Metaball.__doc__ += id_generics.attributes 165 166168 """ 169 The MetaElemSeq object 170 ====================== 171 This object provides sequence and iterator access to the metaballs elements. 172 The elements accessed within this iterator "wraps" the actual metaball elements; changing any 173 of the elements's attributes will immediately change the data in the metaball. 174 175 This iterator is most like pythons 'set' type. 176 """ 177214179 """ 180 Append a new element to the metaball. 181 no arguments are taken, instead a new metaelement is 182 added to the metaball data and returned. 183 This new element can then be modified. 184 185 @return: a new meta element. 186 @rtype: Metaelement 187 """188190 """ 191 remove an element from the metaball data. 192 193 if the element is not a part of the metaball data, an error will be raised. 194 195 @return: None 196 @rtype: None 197 """198200 """ 201 Iterate over elements in this metaball. 202 203 @return: One of the metaelem in this metaball. 204 @rtype: Metaelem 205 """206216 """ 217 The Metaelem object 218 =================== 219 This gives direct access to meta element data within a metaball. 220 @ivar type: The type of the metaball. 221 Values must be from L{Types} 222 223 Example:: 224 from Blender import Metaball 225 mb= Metaball.Get('mb') 226 for el in mb.elements: 227 el.type= Metaball.Types.CUBE 228 @type type: int 229 @ivar co: The location of this element. 230 @type co: Vector 231 @ivar dims: Element dimensions. 232 Values clamped between 0 and 20 on all axies. 233 @type dims: Vector 234 @ivar quat: Element rotation. 235 @type quat: Quaternion 236 @ivar stiffness: Element stiffness. 237 Value clamped between 0 and 10. 238 @type stiffness: float 239 @ivar radius: Element radius. 240 Value clamped between 0 and 5000. 241 @type radius: float 242 @ivar negative: Element negative volume status. 243 @type negative: bool 244 @ivar hide: Element hidden status. 245 @type hide: bool 246 """247
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Fri Oct 24 10:23:55 2008 | http://epydoc.sourceforge.net |