diff options
Diffstat (limited to 'source/blender/python/api2_2x/doc/NMesh.py')
-rw-r--r-- | source/blender/python/api2_2x/doc/NMesh.py | 823 |
1 files changed, 0 insertions, 823 deletions
diff --git a/source/blender/python/api2_2x/doc/NMesh.py b/source/blender/python/api2_2x/doc/NMesh.py deleted file mode 100644 index e6d779aebb8..00000000000 --- a/source/blender/python/api2_2x/doc/NMesh.py +++ /dev/null @@ -1,823 +0,0 @@ -# Blender.NMesh module and the NMesh PyType object - -""" -The Blender.NMesh submodule. - -B{Deprecated}: -This module is now maintained but not actively developed. - -Access to data such as properties, library, UVLayers and ColorLayers is not available -further more, a mesh modified with NMesh will destroy inactive UV and Color layers -so writing tools that use NMesh is discouraged. - -Use L{Mesh} instead. - -Mesh Data -========= - -This module provides access to B{Mesh Data} objects in Blender. - -Example:: - - import Blender - from Blender import NMesh, Material, Window - - editmode = Window.EditMode() # are we in edit mode? If so ... - if editmode: Window.EditMode(0) # leave edit mode before getting the mesh - - me = NMesh.GetRaw("Plane") # get the mesh data called "Plane" - - if not me.materials: # if there are no materials ... - newmat = Material.New() # create one ... - me.materials.append(newmat) # and append it to the mesh's list of mats - - print me.materials # print the list of materials - mat = me.materials[0] # grab the first material in the list - mat.R = 1.0 # redefine its red component - for v in me.verts: # loop the list of vertices - v.co[0] *= 2.5 # multiply the coordinates - v.co[1] *= 5.0 - v.co[2] *= 2.5 - me.update() # update the real mesh in Blender - - if editmode: Window.EditMode(1) # optional, just being nice - -@type Modes: readonly dictionary -@type FaceFlags: readonly dictionary -@type FaceModes: readonly dictionary -@type FaceTranspModes: readonly dictionary -@var Modes: The available mesh modes. - - NOVNORMALSFLIP - no flipping of vertex normals during render. - - TWOSIDED - double sided mesh. - - AUTOSMOOTH - turn auto smoothing of faces "on". -@var FaceFlags: The available *texture face* (uv face select mode) selection - flags. Note: these refer to TexFace faces, available if nmesh.hasFaceUV() - returns true. - - SELECT - selected (deprecated after 2.43 release, use face.sel). - - HIDE - hidden (deprecated after 2.43 release, use face.sel). - - ACTIVE - the active face. -@var FaceModes: The available *texture face* modes. Note: these are only - meaningful if nmesh.hasFaceUV() returns true, since in Blender this info is - stored at the TexFace (TexFace button in Edit Mesh buttons) structure. - - ALL - set all modes at once. - - BILLBOARD - always orient after camera. - - HALO - halo face, always point to camera. - - DYNAMIC - respond to collisions. - - INVISIBLE - invisible face. - - LIGHT - dynamic lighting. - - OBCOL - use object color instead of vertex colors. - - SHADOW - shadow type. - - SHAREDVERT - apparently unused in Blender. - - SHAREDCOL - shared vertex colors (per vertex). - - TEX - has texture image. - - TILES - uses tiled image. - - TWOSIDE - two-sided face. -@var FaceTranspModes: The available face transparency modes. Note: these are - enumerated values (enums), they can't be combined (ANDed, ORed, etc) like a bit vector. - - SOLID - draw solid. - - ADD - add to background (halo). - - ALPHA - draw with transparency. - - SUB - subtract from background. -@var EdgeFlags: The available edge flags. - - SELECT - selected. - - EDGEDRAW - edge is drawn out of edition mode. - - SEAM - edge is a seam for UV unwrapping - - FGON - edge is part of a F-Gon. -""" - -def Col(col = [255, 255, 255, 255]): - """ - Get a new mesh rgba color. - @type col: list - @param col: A list [red, green, blue, alpha] of integer values in [0, 255]. - @rtype: NMCol - @return: A new NMCol (mesh rgba color) object. - """ - -def Vert(x = 0, y = 0, z = 0): - """ - Get a new vertex object. - @type x: float - @type y: float - @type z: float - @param x: The x coordinate of the vertex. - @param y: The y coordinate of the vertex. - @param z: The z coordinate of the vertex. - @rtype: NMVert - @return: A new NMVert object. - """ - -def Face(vertexList = None): - """ - Get a new face object. - @type vertexList: list - @param vertexList: A list of B{up to 4} NMVerts (mesh vertex - objects). - @rtype: NMFace - @return: A new NMFace object. - """ - -def New(name = 'Mesh'): - """ - Create a new mesh object. - @type name: string - @param name: An optional name for the created mesh. - rtype: NMesh - @return: A new (B{empty}) NMesh object. - """ - -def GetRaw(name = None): - """ - Get the mesh data object called I{name} from Blender. - @type name: string - @param name: The name of the mesh data object. - @rtype: NMesh - @return: It depends on the 'name' parameter: - - (name) - The NMesh wrapper of the mesh called I{name}, - None if not found. - - () - A new (empty) NMesh object. - """ - -def GetNames(): - """ - Get a list with the names of all available meshes in Blender. - @rtype: list of strings - @return: a list of mesh names. - @note: to get actual mesh data, pass a mesh name to L{GetRaw}. - """ - -def GetRawFromObject(name): - """ - Get the raw mesh data object from the Object in Blender called I{name}.\n - Note: The mesh coordinates are in local space, not the world space of its Object.\n - For world space vertex coordinates, each vertex location must be multiplied by the object's 4x4 matrix. - This function support all the geometry based objects: Mesh, Text, Surface, Curve, Meta. - @type name: string - @param name: The name of an Object. - @rtype: NMesh - @return: The NMesh wrapper of the mesh data from the Object called I{name}. - @note: For "subsurfed" meshes, it's the B{display} level of subdivision that - matters, the rendering one is only processed at the rendering pre-stage - and is not available for scripts. This is not a problem at all, since - you can get and set the subdivision levels via scripting, too (see - L{NMesh.NMesh.getSubDivLevels}, L{NMesh.NMesh.setSubDivLevels}). - @note: Meshes extracted from curve based objects (Font/2D filled curves) - contain both the filled surfaces and the outlines of the shapes. - @warn: This function gets I{deformed} mesh data, already modified for - displaying (think "display list"). It also doesn't let you overwrite the - original mesh in Blender, so if you try to update it, a new mesh will - be created. - @warn: For Meta Object's, this function will only return a NMesh with some geometry - when called on the base element (the one with the shortest name). - """ - -def PutRaw(nmesh, name = None, recalc_normals = 1, store_edges = 0): - """ - Put a BPython NMesh object as a mesh data object in Blender. - @note: if there is already a mesh with the given 'name', its contents are - freed and the new data is put in it. Also, if this mesh is not linked to any - object, a new object for it is created. Reminder: in Blender an object is - composed of the base object and linked object data (mesh, metaball, camera, - etc. etc). - @type nmesh: NMesh - @type name: string - @type recalc_normals: int - @type store_edges: int - @param name: The name of the mesh data object in Blender which will receive - this nmesh data. It can be an existing mesh data object or a new one. - @param recalc_normals: If non-zero, the vertex normals for the mesh will - be recalculated. - @param store_edges: deprecated, edges are always stored now. - @rtype: None or Object - @return: It depends on the 'name' parameter: - - I{name} refers to an existing mesh data obj already linked to an - object: return None. - - I{name} refers to a new mesh data obj or an unlinked (no users) one: - return the created Blender Object wrapper. - """ - -class NMCol: - """ - The NMCol object - ================ - This object is a list of ints: [r, g, b, a] representing an - rgba color. - @ivar r: The Red component in [0, 255]. - @ivar g: The Green component in [0, 255]. - @ivar b: The Blue component in [0, 255]. - @ivar a: The Alpha (transparency) component in [0, 255]. - """ - -class NMVert: - """ - The NMVert object - ================= - This object holds mesh vertex data. - @type co: 3D Vector object. (WRAPPED DATA) - @ivar co: The vertex coordinates (x, y, z). - @type no: 3D Vector object. (unit length) (WRAPPED DATA) - @ivar no: The vertex normal vector (x, y, z). - @type uvco: 3D Vector object. (WRAPPED DATA) - @ivar uvco: The vertex texture "sticky" coordinates. The Z value of the Vector is ignored. - @type index: int - @ivar index: The vertex index, if owned by a mesh. - @type sel: int - @ivar sel: The selection state (selected:1, unselected:0) of this vertex.\n - Note: An NMesh will return the selection state of the mesh when EditMod was last exited. A python script operating in EditMode must exit edit mode, before getting the current selection state of the mesh. - @warn: There are two kinds of uv texture coordinates in Blender: per vertex - ("sticky") and per face vertex (uv in L{NMFace}). In the first, there's - only one uv pair of coordinates for each vertex in the mesh. In the - second, for each face it belongs to, a vertex can have different uv - coordinates. This makes the per face option more flexible, since two - adjacent faces won't have to be mapped to a continuous region in an image: - each face can be independently mapped to any part of its texture. - """ - -class NMEdge: - """ - The NMEdge object - ================= - This object holds mesh edge data. - @type v1: NMVert - @ivar v1: The first vertex of the edge. - @type v2: NMVert - @ivar v2: The second vertex of the edge. - @type crease: int - @ivar crease: The crease value of the edge. It is in the range [0,255]. - @type flag: int - @ivar flag: The bitmask describing edge properties. See L{NMesh.EdgeFlags<EdgeFlags>}. - """ - -class NMFace: - """ - The NMFace object - ================= - This object holds mesh face data. - - Example:: - import Blender - from Blender import NMesh, Window - - in_emode = Window.EditMode() - if in_emode: Window.EditMode(0) - - me = NMesh.GetRaw("Mesh") - faces = me.faces - - ## Example for editmode faces selection: - selected_faces = [] - for f in faces: - if f.sel: - selected_faces.append(f) - # ... unselect selected and select all the others: - for f in faces: - f.sel = 1 - f.sel # 1 becomes 0, 0 becomes 1 - - ## Example for uv textured faces selection: - selected_faces = [] - SEL = NMesh.FaceFlags['SELECT'] - # get selected faces: - for f in faces: - if f.flag & SEL: - selected_faces.append(f) - # ... unselect selected and select all the others: - for f in faces: - if f.flag & SEL: - f.flag &=~SEL # unselect these - else: f.flag |= SEL # and select these - - me.update() - if in_emode: Window.EditMode(1) - Blender.Redraw() - - @type v: list - @ivar v: The list of face vertices (B{up to 4}). - @type sel: bool - @ivar sel: The selection state (1: selected, 0: unselected) of this NMesh's - faces *in edit mode*. This is not the same as the selection state of - the textured faces (see L{flag}). - @type hide: bool - @ivar hide: The visibility state (1: hidden, 0: visible) of this NMesh's - faces *in edit mode*. This is not the same as the visibility state of - the textured faces (see L{flag}). - @ivar col: The list of vertex colors. - @ivar mat: Same as I{materialIndex} below. - @ivar materialIndex: The index of this face's material in its NMesh materials - list. - @ivar smooth: If non-zero, the vertex normals are averaged to make this - face look smooth. - @ivar image: The Image used as a texture for this face. - @ivar mode: The display mode (see L{Mesh.FaceModes<FaceModes>}) - @ivar flag: Bit vector specifying selection / visibility flags for uv - textured faces (visible in Face Select mode, see - L{NMesh.FaceFlags<FaceFlags>}). - @ivar transp: Transparency mode bit vector - (see L{NMesh.FaceTranspModes<FaceTranspModes>}). - @ivar uv: List of per-face UV coordinates: [(u0, v0), (u1, v1), ...]. - @ivar normal: (or just B{no}) The normal vector for this face: [x,y,z]. - @note: there are normal faces and textured faces in Blender, both currently - with their own selection and visibility states, due to a mix of old and new - code. To (un)select or (un)hide normal faces (visible in editmode), use - L{sel} and L{hide} variables. For textured faces (Face Select - mode in Blender) use the old L{flag} bitflag. Also check the - example above and note L{Window.EditMode}. - @note: Assigning uv textures to mesh faces in Blender works like this: - 1. Select your mesh. - 2. Enter face select mode (press f) and select at least some face(s). - 3. In the UV/Image Editor window, load / select an image. - 4. Play in both windows (better split the screen to see both at the same - time) until the uv coordinates are where you want them. Hint: in the - 3d window, the 'u' key opens a menu of default uv choices and the 'r' - key lets you rotate the uv coordinates. - 5. Leave face select mode (press f). - """ - - def append(vertex): - """ - Append a vertex to this face's vertex list. - @type vertex: NMVert - @param vertex: An NMVert object. - """ - -from IDProp import IDGroup, IDArray -class NMesh: - """ - The NMesh Data object - ===================== - This object gives access to mesh data in Blender. We refer to mesh as the - object in Blender and NMesh as its Python counterpart. - @ivar properties: Returns an L{IDGroup<IDProp.IDGroup>} reference to this - object's ID Properties. - @type properties: L{IDGroup<IDProp.IDGroup>} - @ivar name: The NMesh name. It's common to use this field to store extra - data about the mesh (to be exported to another program, for example). - @ivar materials: The list of materials used by this NMesh. See - L{getMaterials} for important details. - @ivar verts: The list of NMesh vertices (NMVerts). - @ivar users: The number of Objects using (linked to) this mesh. - @ivar faces: The list of NMesh faces (NMFaces). - @ivar edges: A list of L{NMEdge} edges. - @ivar mode: The mode flags for this mesh. See L{setMode}. - @ivar subDivLevels: The [display, rendering] subdivision levels in [1, 6]. - @ivar maxSmoothAngle: The max angle for auto smoothing. See L{setMode}. - @cvar key: The L{Key.Key} object attached to this mesh, if any. - """ - - def addEdge(v1, v2): - """ - Create an edge between two vertices. - If an edge already exists between those vertices, it is returned. - Created edge is automatically added to edges list. - You can only call this method if mesh has edge data. - @note: In Blender only zero or one edge can link two vertices. - @type v1: NMVert - @param v1: the first vertex of the edge. - @type v2: NMVert - @param v2: the second vertex of the edge. - @rtype: NMEdge - @return: The created or already existing edge. - """ - - def findEdge(v1, v2): - """ - Try to find an edge between two vertices. - If no edge exists between v1 and v2, None is returned. - You can only call this method if mesh has edge data. - @type v1: NMVert - @param v1: the first vertex of the edge. - @type v2: NMVert - @param v2: the second vertex of the edge. - @rtype: NMEdge - @return: The found edge. None if no edge was found. - """ - - def removeEdge(v1, v2): - """ - Remove an edge between two vertices. - All faces using this edge are removed from faces list. - You can only call this method if mesh has edge data. - @type v1: NMVert - @param v1: the first vertex of the edge. - @type v2: NMVert - @param v2: the second vertex of the edge. - """ - - def addFace(face): - """ - Add a face to face list and add to edge list (if edge data exists) necessary edges. - @type face: NMFace - @param face: the face to add to the mesh. - @rtype: list of NMEdge - @return: If mesh has edge data, return the list of face edges. - """ - - def removeFace(face): - """ - Remove a face for face list and remove edges no more used by any other face (if edge data exists). - @type face: NMFace - @param face: the face to add to the mesh. - """ - - def addMaterial(material): - """ - Add a new material to this NMesh's list of materials. This method is the - slower but safer way to add materials, since it checks if the argument - given is really a material, imposes a limit of 16 materials and only adds - the material if it wasn't already in the list. - @type material: Blender Material - @param material: A Blender Material. - """ - - def getMaterials(what = -1): - """ - Get this NMesh's list of materials. - @type what: int - @param what: determines the list's contents: - - -1: return the current NMesh's list; - - 0: retrieve a fresh list from the Blender mesh -- eventual - modifications made by the script not included, unless - L{update} is called before this method; - - 1: like 0, but empty slots are not ignored, they are returned as - None's. - @note: what >= 0 also updates nmesh.materials attribute. - @rtype: list of materials - @return: the requested list of materials. - @note: if a user goes to the material buttons window and removes some - mesh's link to a material, that material slot becomes empty. - Previously such materials were ignored. - @note: L{Object.colbits<Object.Object.colbits>} needs to be set correctly - for each object in order for these materials to be used instead of - the object's materials. - """ - - def setMaterials(matlist): - """ - Set this NMesh's list of materials. This method checks the consistency of - the passed list: must only have materials or None's and can't contain more - than 16 entries. - @type matlist: list of materials - @param matlist: a list with materials, None's also accepted (they become - empty material slots in Blender. - @note: L{Object.colbits<Object.Object.colbits>} needs to be set correctly - for each object in order for these materials to be used instead of - the object's materials. - """ - - def hasVertexColours(flag = None): - """ - Get (and optionally set) if this NMesh has vertex colors. - @type flag: int - @param flag: If given and non-zero, the "vertex color" flag for this NMesh - is turned I{on}. - @rtype: bool - @return: The current value of the "vertex color" flag. - @warn: If a mesh has both vertex colors and textured faces, this function - will return False. This is due to the way Blender deals internally with - the vertex colors array (if there are textured faces, it is copied to - the textured face structure and the original array is freed/deleted). - If you want to know if a mesh has both textured faces and vertex - colors, set *in Blender* the "VCol Paint" flag for each material that - covers an area that was also vertex painted and then check in your - Python script if that material flag is set. Of course also tell others - who use your script to do the same. The "VCol Paint" material mode flag - is the way to tell Blender itself to render with vertex colors, too, so - it's a natural solution. - """ - - def hasFaceUV(flag = None): - """ - Get (and optionally set) if this NMesh has UV-mapped textured faces. - @type flag: int - @param flag: If given and non-zero, the "textured faces" flag for this - NMesh is turned I{on}. - @rtype: bool - @return: The current value of the "textured faces" flag. - """ - - def hasVertexUV(flag = None): - """ - Get (and optionally set) the "sticky" flag that controls if a mesh has - per vertex UV coordinates. - @type flag: int - @param flag: If given and non-zero, the "sticky" flag for this NMesh is - turned I{on}. - @rtype: bool - @return: The current value of the "sticky" flag. - """ - - def getActiveFace(): - """ - Get the index of the active face. - @rtype: int - @return: The index of the active face. - """ - - def getSelectedFaces(flag = None): - """ - Get list of selected faces. - @type flag: int - @param flag: If given and non-zero, the list will have indices instead of - the NMFace objects themselves. - @rtype: list - @return: It depends on the I{flag} parameter: - - if None or zero: List of NMFace objects. - - if non-zero: List of indices to NMFace objects. - @warn: this method exists to speed up retrieving of selected faces from - the actual mesh in Blender. So, if you make changes to the nmesh, you - need to L{update} it before using this method. - """ - - def getVertexInfluences(index): - """ - Get influences of bones in a specific vertex. - @type index: int - @param index: The index of a vertex. - @rtype: list of lists - @return: List of pairs (name, weight), where name is the bone name (string) - and its weight is a float value. - """ - - def getKey(): - """ - Get the Key object representing the Vertex Keys (absolute or - relative) assigned to this mesh. - @rtype: L{Key.Key} object or None - """ - - def insertKey(frame = None, type = 'relative'): - """ - Insert a mesh key at the given frame. Remember to L{update} the nmesh - before doing this, or changes in the vertices won't be updated in the - Blender mesh. - @type frame: int - @type type: string - @param frame: The Scene frame where the mesh key should be inserted. If - None, the current frame is used. - @param type: The mesh key type: 'relative' or 'absolute'. This is only - relevant on the first call to insertKey for each nmesh (and after all - keys were removed with L{removeAllKeys}, of course). - @warn: This and L{removeAllKeys} were included in this release only to - make accessing vertex keys possible, but may not be a proper solution - and may be substituted by something better later. For example, it - seems that 'frame' should be kept in the range [1, 100] - (the curves can be manually tweaked in the Ipo Curve Editor window in - Blender itself later). - """ - - def removeAllKeys(): - """ - Remove all mesh keys stored in this mesh. - @rtype: bool - @return: True if successful or False if this NMesh wasn't linked to a real - Blender Mesh yet (or was, but the Mesh had no keys). - @warn: Currently the mesh keys from meshes that are grabbed with - NMesh.GetRaw() or .GetRawFromObject() are preserved, so if you want to - clear them or don't want them at all, remember to call this method. Of - course NMeshes created with NMesh.New() don't have mesh keys until you - add them. - """ - - def update(recalc_normals = 0, store_edges = 0, vertex_shade = 0): - """ - Update the mesh in Blender. The changes made are put back to the mesh in - Blender, if available, or put in a newly created mesh if this NMesh wasn't - already linked to one. - @type recalc_normals: int (bool) - @param recalc_normals: if nonzero the vertex normals are recalculated. - @type store_edges: int (bool) - @param store_edges: deprecated, edges are always stored now. - @type vertex_shade: int (bool) - @param vertex_shade: if nonzero vertices are colored based on the - current lighting setup, like when there are no vertex colors and no - textured faces and a user enters Vertex Paint Mode in Blender (only - lamps in visible layers account). To use this functionality, be out of - edit mode or else an error will be returned. - @warn: edit mesh and normal mesh are two different structures in Blender, - synchronized upon leaving or entering edit mode. Always remember to - leave edit mode (L{Window.EditMode}) before calling this update - method, or your changes will be lost. Even better: for the same reason - programmers should leave EditMode B{before} getting a mesh, or changes - made to the editmesh in Blender may not be visible to your script - (check the example at the top of NMesh module doc). - @warn: unlike the L{PutRaw} function, this method doesn't check validity of - vertex, face and material lists, because it is meant to be as fast as - possible (and already performs many tasks). So programmers should make - sure they only feed proper data to the nmesh -- a good general - recommendation, of course. It's also trivial to write code to check - all data before updating, for example by comparing each item's type - with the actual L{Types}, if you need to. - @note: this method also redraws the 3d view and -- if 'vertex_shade' is - nonzero -- the edit buttons window. - @note: if your mesh disappears after it's updated, try - L{Object.Object.makeDisplayList}. 'Subsurf' meshes (see L{getMode}, - L{setMode}) need their display lists updated, too. - """ - - def transform(matrix, recalc_normals = False): - """ - Transforms the mesh by the specified 4x4 matrix, as returned by - L{Object.Object.getMatrix}, though this will work with any invertible 4x4 - matrix type. Ideal usage for this is exporting to an external file where - global vertex locations are required for each object. - Sometimes external renderers or file formats do not use vertex normals. - In this case, you can skip transforming the vertex normals by leaving - the optional parameter recalc_normals as False or 0 ( the default value ). - - Example:: - # This script outputs deformed meshes worldspace vertex locations - # for a selected object - import Blender - from Blender import NMesh, Object - - ob = Object.GetSelected()[0] # Get the first selected object - me = NMesh.GetRawFromObject(ob.name) # Get the objects deformed mesh data - me.transform(ob.matrix) - - for v in me.verts: - print 'worldspace vert', v.co - - @type matrix: Py_Matrix - @param matrix: 4x4 Matrix which can contain location, scale and rotation. - @type recalc_normals: int (bool) - @param recalc_normals: if True or 1, transform normals as well as vertex coordinates. - @warn: if you call this method and later L{update} the mesh, the new - vertex positions will be passed back to Blender, but the object - matrix of each object linked to this mesh won't be automatically - updated. You need to set the object transformations (rotation, - translation and scaling) to identities, then, or the mesh data will - be changed ("transformed twice"). - """ - - def getMode(): - """ - Get this mesh's mode flags. - @rtype: int - @return: ORed value. See L{Modes}. - """ - - def setMode(m=None, m1=None, m2=None): - """ - Set the mode flags for this mesh. Given mode strings turn the mode "on". - Modes not passed in are turned "off", so setMode() (without arguments) - unsets all mode flags. - @type m: string or int (bitflag) - @param m: mode string or int. An int (see L{Modes}) or from none to 3 - strings can be given: - - "NoVNormalsFlip" - - "TwoSided" - - "AutoSmooth" - """ - - def addVertGroup(group): - """ - Add a named and empty vertex (deform) group to the object this nmesh is - linked to. If this nmesh was newly created or accessed with GetRaw, it must - first be linked to an object (with object.link or NMesh.PutRaw) so the - method knows which object to update.\n - This is because vertex groups in Blender are stored in I{the object} -- - not in the mesh, which may be linked to more than one object. For this - reason, it's better to use "mesh = object.getData()" than - "mesh = NMesh.GetRaw(meshName)" to access an existing mesh. - @type group: string - @param group: the name for the new group. - """ - - def removeVertGroup(group): - """ - Remove a named vertex (deform) group from the object linked to this nmesh. - All vertices assigned to the group will be removed (just from the group, - not deleted from the mesh), if any. If this nmesh was newly created, it - must first be linked to an object (read the comment in L{addVertGroup} for - more info). - @type group: string - @param group: the name of a vertex group. - """ - - def assignVertsToGroup(group, vertList, weight, assignmode = 'replace'): - """ - Adds an array (a python list) of vertex points to a named vertex group - associated with a mesh. The vertex list is a list of vertex indices from - the mesh. You should assign vertex points to groups only when the mesh has - all its vertex points added to it and is already linked to an object. - - I{B{Example:}} - The example here adds a new set of vertex indices to a sphere primitive:: - import Blender - sphere = Blender.Object.Get('Sphere') - mesh = sphere.getData() - mesh.addVertGroup('firstGroup') - vertList = [] - for x in range(300): - if x % 3 == 0: - vertList.append(x) - mesh.assignVertsToGroup('firstGroup', vertList, 0.5, 'add') - - @type group: string - @param group: the name of the group. - @type vertList: list of ints - @param vertList: a list of vertex indices. - @type weight: float - @param weight: the deform weight for (which means: the amount of influence - the group has over) the given vertices. It should be in the range - [0.0, 1.0]. If weight <= 0, the given vertices are removed from the - group. If weight > 1, it is clamped. - @type assignmode: string - @param assignmode: Three choices: - - 'add' - - 'subtract' - - 'replace'\n - - 'B{add}': if the vertex in the list is not assigned to the group - already, this creates a new association between this vertex and the - group with the weight specified, otherwise the weight given is added to - the current weight of an existing association between the vertex and - group.\n - 'B{subtract}' will attempt to subtract the weight passed from a vertex - already associated with a group, else it does nothing.\n - 'B{replace}' attempts to replace a weight with the new weight value - for an already associated vertex/group, else it does nothing. - """ - - def removeVertsFromGroup(group, vertList = None): - """ - Remove a list of vertices from the given group. If this nmesh was newly - created, it must first be linked to an object (check L{addVertGroup}). - @type group: string - @param group: the name of a vertex group - @type vertList: list of ints - @param vertList: a list of vertex indices to be removed from the given - 'group'. If None, all vertices are removed -- the group is emptied. - """ - - def getVertsFromGroup(group, weightsFlag = 0, vertList = None): - """ - Return a list of vertex indices associated with the passed group. This - method can be used to test whether a vertex index is part of a group and - if so, what its weight is. - - I{B{Example:}} - Append this to the example from L{assignVertsToGroup}:: - # ... - print "Vertex indices from group %s :" % groupName - print mesh.getVertsFromGroup('firstGroup') - print "Again, with weights:" - print mesh.getVertsFromGroup('firstGroup',1) - print "Again, with weights and restricted to the given indices:" - print mesh.getVertsFromGroup('firstGroup',1,[1,2,3,4,5,6]) - - @type group: string - @param group: the group name. - @type weightsFlag: bool - @param weightsFlag: if 1, the weight is returned along with the index. - @type vertList: list of ints - @param vertList: if given, only those vertex points that are both in the - list and group passed in are returned. - """ - - def renameVertGroup(groupName, newName): - """ - Renames a vertex group. - @type groupName: string - @param groupName: the vertex group name to be renamed. - @type newName: string - @param newName: the name to replace the old name. - """ - - def getVertGroupNames(): - """ - Return a list of all vertex group names. - @rtype: list of strings - @return: returns a list of strings representing all vertex group - associated with the mesh's object - """ - - def getMaxSmoothAngle(): - """ - Get the max angle for auto smoothing. - Note: This will only affect smoothing generated at render time. - Smoothing can also be set per face which is visible in Blenders 3D View. - @return: The value in degrees. - """ - - def setMaxSmoothAngle(angle): - """ - Set the max angle for auto smoothing. - @type angle: int - @param angle: The new value in degrees -- it's clamped to [1, 80]. - """ - - def getSubDivLevels(): - """ - Get the mesh subdivision levels for realtime display and rendering. - @return: list of ints: [display, render]. - """ - - def setSubDivLevels(subdiv): - """ - Set the mesh subdivision levels for realtime display and rendering. - @type subdiv: list of 2 ints - @param subdiv: new subdiv levels: [display, render]. Both are clamped to - lie in the range [1, 6]. - """ - - |