Package pyffi :: Package formats :: Package nif :: Class NifFormat :: Class NiGeometryData
[hide private]
[frames] | no frames]

Class NiGeometryData

source code

                  object --+                        
                           |                        
      utils.graph.DetailNode --+                    
                               |                    
          utils.graph.GlobalNode --+                
                                   |                
object_models.xml.struct_.StructBase --+            
                                       |            
                     NifFormat._NiObject --+        
                                           |        
                          NifFormat.NiObject --+    
                                               |    
                       NifFormat._NiGeometryData --+
                                                   |
                                                  NifFormat.NiGeometryData
Known Subclasses:

>>> from pyffi.formats.nif import NifFormat
>>> geomdata = NifFormat.NiGeometryData()
>>> geomdata.num_vertices = 3
>>> geomdata.has_vertices = True
>>> geomdata.has_normals = True
>>> geomdata.has_vertex_colors = True
>>> geomdata.num_uv_sets = 2
>>> geomdata.vertices.update_size()
>>> geomdata.normals.update_size()
>>> geomdata.vertex_colors.update_size()
>>> geomdata.uv_sets.update_size()
>>> geomdata.vertices[0].x = 1
>>> geomdata.vertices[0].y = 2
>>> geomdata.vertices[0].z = 3
>>> geomdata.vertices[1].x = 4
>>> geomdata.vertices[1].y = 5
>>> geomdata.vertices[1].z = 6
>>> geomdata.vertices[2].x = 1.200001
>>> geomdata.vertices[2].y = 3.400001
>>> geomdata.vertices[2].z = 5.600001
>>> geomdata.normals[0].x = 0
>>> geomdata.normals[0].y = 0
>>> geomdata.normals[0].z = 1
>>> geomdata.normals[1].x = 0
>>> geomdata.normals[1].y = 1
>>> geomdata.normals[1].z = 0
>>> geomdata.normals[2].x = 1
>>> geomdata.normals[2].y = 0
>>> geomdata.normals[2].z = 0
>>> geomdata.vertex_colors[1].r = 0.310001
>>> geomdata.vertex_colors[1].g = 0.320001
>>> geomdata.vertex_colors[1].b = 0.330001
>>> geomdata.vertex_colors[1].a = 0.340001
>>> geomdata.uv_sets[0][0].u = 0.990001
>>> geomdata.uv_sets[0][0].v = 0.980001
>>> geomdata.uv_sets[0][2].u = 0.970001
>>> geomdata.uv_sets[0][2].v = 0.960001
>>> geomdata.uv_sets[1][0].v = 0.910001
>>> geomdata.uv_sets[1][0].v = 0.920001
>>> geomdata.uv_sets[1][2].v = 0.930001
>>> geomdata.uv_sets[1][2].v = 0.940001
>>> for h in geomdata.get_vertex_hash_generator():
...     print(h)
(1000, 2000, 3000, 0, 0, 1000, 99000, 98000, 0, 92000, 0, 0, 0, 0)
(4000, 5000, 6000, 0, 1000, 0, 0, 0, 0, 0, 310, 320, 330, 340)
(1200, 3400, 5600, 1000, 0, 0, 97000, 96000, 0, 94000, 0, 0, 0, 0)
Nested Classes [hide private]

Inherited from object_models.xml.struct_.StructBase: __metaclass__

Instance Methods [hide private]
 
update_center_radius(self)
Recalculate center and radius of the data.
source code
 
apply_scale(self, scale)
Apply scale factor on data.
source code
 
get_vertex_hash_generator(self, vertexprecision=3, normalprecision=3, uvprecision=5, vcolprecision=3)
Generator which produces a tuple of integers for each (vertex, normal, uv, vcol), to ease detection of duplicate vertices.
source code

Inherited from NiObject: find, find_chain, is_interchangeable, tree

Inherited from NiObject (private): _validateTree

Inherited from object_models.xml.struct_.StructBase: __init__, __str__, deepcopy, fix_links, get_attribute, get_basic_attribute, get_detail_child_names, get_detail_child_nodes, get_global_child_nodes, get_global_display, get_hash, get_links, get_refs, get_size, get_strings, get_template_attribute, read, replace_global_node, set_attribute, set_basic_attribute, set_template_attribute, write

Inherited from utils.graph.GlobalNode: get_global_child_edge_types, get_global_iterator

Inherited from utils.graph.DetailNode: get_detail_child_edge_types, get_detail_display, get_detail_iterator

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __subclasshook__

Class Methods [hide private]

Inherited from object_models.xml.struct_.StructBase: get_games, get_versions

Class Variables [hide private]
  _attribute_list = [<pyffi.object_models.xml.StructAttribute ob...

Inherited from object_models.xml.struct_.StructBase: arg

Properties [hide private]

Inherited from _NiGeometryData: additional_data, bitangents, bs_num_uv_sets, center, compress_flags, consistency_flags, has_normals, has_uv, has_vertex_colors, has_vertices, keep_flags, normals, num_uv_sets, num_vertices, radius, tangents, unknown_13_shorts, unknown_int, uv_sets, vertex_colors, vertices

Inherited from object: __class__

Method Details [hide private]

apply_scale(self, scale)

source code 
Apply scale factor on data.
Overrides: NiObject.apply_scale

get_vertex_hash_generator(self, vertexprecision=3, normalprecision=3, uvprecision=5, vcolprecision=3)

source code 

Generator which produces a tuple of integers for each (vertex, normal, uv, vcol), to ease detection of duplicate vertices. The precision parameters denote number of significant digits behind the comma.

Default for uvprecision should really be high because for very large models the uv coordinates can be very close together.

For vertexprecision, 3 seems usually enough (maybe we'll have to increase this at some point).

Parameters:
  • vertexprecision (float) - Precision to be used for vertices.
  • normalprecision (float) - Precision to be used for normals.
  • uvprecision (float) - Precision to be used for uvs.
  • vcolprecision (float) - Precision to be used for vertex colors.
Returns:
A generator yielding a hash value for each vertex.

Class Variable Details [hide private]

_attribute_list

Value:
[<pyffi.object_models.xml.StructAttribute object at 0x2dd11d0>,
 <pyffi.object_models.xml.StructAttribute object at 0x2dd1f10>,
 <pyffi.object_models.xml.StructAttribute object at 0x2dcce50>,
 <pyffi.object_models.xml.StructAttribute object at 0x2dcccd0>,
 <pyffi.object_models.xml.StructAttribute object at 0x2dd9610>,
 <pyffi.object_models.xml.StructAttribute object at 0x2dd9650>,
 <pyffi.object_models.xml.StructAttribute object at 0x2dd9750>,
 <pyffi.object_models.xml.StructAttribute object at 0x2dd9a90>,
...