pyffi.formats.nif — NetImmerse/Gamebryo (.nif and .kf)¶
Implementation¶
-
class
pyffi.formats.nif.NifFormat[source]¶ Bases:
pyffi.object_models.xml.FileFormatThis class contains the generated classes from the xml.
-
ARCHIVE_CLASSES= [<class 'pyffi.formats.bsa.BsaFormat'>]¶
-
class
ATextureRenderData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._ATextureRenderData,object
-
class
AVObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseUsed in NiDefaultAVObjectPalette.
-
property
av_object¶
-
property
name¶
-
property
-
class
AbstractAdditionalGeometryData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject
-
class
AdditionalDataBlock(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
block_offsets¶
-
property
block_size¶
-
property
data¶
-
property
data_sizes¶
-
property
has_data¶
-
property
num_blocks¶
-
property
num_data¶
-
property
-
class
AdditionalDataInfo(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
block_index¶
-
property
channel_offset¶
-
property
data_type¶
-
property
num_channel_bytes¶
-
property
num_channel_bytes_per_element¶
-
property
num_total_bytes_per_element¶
-
property
unknown_byte_1¶
-
property
-
class
AlphaFormat(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing how transparency is handled in a texture.
-
ALPHA_BINARY= 1¶
-
ALPHA_DEFAULT= 3¶
-
ALPHA_NONE= 0¶
-
ALPHA_SMOOTH= 2¶
-
-
class
AnimationType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAnimation type used on this position. This specifies the function of this position.
-
Lean= 4¶
-
Sit= 1¶
-
Sleep= 2¶
-
-
class
ApplyMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing the apply mode of a texture.
-
APPLY_DECAL= 1¶
-
APPLY_HILIGHT= 3¶
-
APPLY_HILIGHT2= 4¶
-
APPLY_MODULATE= 2¶
-
APPLY_REPLACE= 0¶
-
-
class
ArkTexture(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA texture reference used by NiArkTextureExtraData.
-
property
texture_name¶
-
property
texturing_property¶
-
property
unknown_bytes¶
-
property
unknown_int_3¶
-
property
unknown_int_4¶
-
property
-
class
AvoidNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeMorrowind specific?
-
class
BSAnimNotes(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectBethesda-specific node.
-
property
unknown_short_1¶
-
property
-
class
BSBehaviorGraphExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataLinks a nif with a Havok Behavior .hkx animation file
-
property
behaviour_graph_file¶
-
property
controls_base_skeleton¶
-
property
-
class
BSBlastNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-Specific node.
-
property
unknown_byte_1¶
-
property
unknown_short_2¶
-
property
-
class
BSBoneLODExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown
-
property
bone_l_o_d_count¶
-
property
bone_l_o_d_info¶
-
property
-
class
BSBound(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._BSBound,object
-
class
BSDamageStage(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-Specific node.
-
property
unknown_byte_1¶
-
property
unknown_short_2¶
-
property
-
class
BSDebrisNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-Specific node.
-
property
unknown_byte_1¶
-
property
unknown_short_2¶
-
property
-
class
BSDecalPlacementVectorExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataBethesda-specific node. (for dynamic decal projection?)
-
property
num_vector_blocks¶
-
property
unknown_float_1¶
-
property
vector_blocks¶
-
property
-
class
BSDismemberBodyPartType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseBiped bodypart data used for visibility control of triangles. Options are Fallout 3, except where marked for Skyrim (uses SBP prefix) Skyrim BP names are listed only for vanilla names, different creatures have different defnitions for naming.
-
BP_BRAIN= 13¶
-
BP_HEAD= 1¶
-
BP_HEAD2= 2¶
-
BP_LEFTARM= 3¶
-
BP_LEFTARM2= 4¶
-
BP_LEFTLEG= 7¶
-
BP_LEFTLEG2= 8¶
-
BP_LEFTLEG3= 9¶
-
BP_RIGHTARM= 5¶
-
BP_RIGHTARM2= 6¶
-
BP_RIGHTLEG= 10¶
-
BP_RIGHTLEG2= 11¶
-
BP_RIGHTLEG3= 12¶
-
BP_SECTIONCAP_BRAIN= 113¶
-
BP_SECTIONCAP_HEAD= 101¶
-
BP_SECTIONCAP_HEAD2= 102¶
-
BP_SECTIONCAP_LEFTARM= 103¶
-
BP_SECTIONCAP_LEFTARM2= 104¶
-
BP_SECTIONCAP_LEFTLEG= 107¶
-
BP_SECTIONCAP_LEFTLEG2= 108¶
-
BP_SECTIONCAP_LEFTLEG3= 109¶
-
BP_SECTIONCAP_RIGHTARM= 105¶
-
BP_SECTIONCAP_RIGHTARM2= 106¶
-
BP_SECTIONCAP_RIGHTLEG= 110¶
-
BP_SECTIONCAP_RIGHTLEG2= 111¶
-
BP_SECTIONCAP_RIGHTLEG3= 112¶
-
BP_TORSO= 0¶
-
BP_TORSOCAP_BRAIN= 213¶
-
BP_TORSOCAP_HEAD= 201¶
-
BP_TORSOCAP_HEAD2= 202¶
-
BP_TORSOCAP_LEFTARM= 203¶
-
BP_TORSOCAP_LEFTARM2= 204¶
-
BP_TORSOCAP_LEFTLEG= 207¶
-
BP_TORSOCAP_LEFTLEG2= 208¶
-
BP_TORSOCAP_LEFTLEG3= 209¶
-
BP_TORSOCAP_RIGHTARM= 205¶
-
BP_TORSOCAP_RIGHTARM2= 206¶
-
BP_TORSOCAP_RIGHTLEG= 210¶
-
BP_TORSOCAP_RIGHTLEG2= 211¶
-
BP_TORSOCAP_RIGHTLEG3= 212¶
-
BP_TORSOSECTION_BRAIN= 13000¶
-
BP_TORSOSECTION_HEAD= 1000¶
-
BP_TORSOSECTION_HEAD2= 2000¶
-
BP_TORSOSECTION_LEFTARM= 3000¶
-
BP_TORSOSECTION_LEFTARM2= 4000¶
-
BP_TORSOSECTION_LEFTLEG= 7000¶
-
BP_TORSOSECTION_LEFTLEG2= 8000¶
-
BP_TORSOSECTION_LEFTLEG3= 9000¶
-
BP_TORSOSECTION_RIGHTARM= 5000¶
-
BP_TORSOSECTION_RIGHTARM2= 6000¶
-
BP_TORSOSECTION_RIGHTLEG= 10000¶
-
BP_TORSOSECTION_RIGHTLEG2= 11000¶
-
BP_TORSOSECTION_RIGHTLEG3= 12000¶
-
SBP_130_HEAD= 130¶
-
SBP_131_HAIR= 131¶
-
SBP_141_LONGHAIR= 141¶
-
SBP_142_CIRCLET= 142¶
-
SBP_143_EARS= 143¶
-
SBP_150_DECAPITATEDHEAD= 150¶
-
SBP_230_HEAD= 230¶
-
SBP_30_HEAD= 30¶
-
SBP_31_HAIR= 31¶
-
SBP_32_BODY= 32¶
-
SBP_33_HANDS= 33¶
-
SBP_34_FOREARMS= 34¶
-
SBP_35_AMULET= 35¶
-
SBP_36_RING= 36¶
-
SBP_37_FEET= 37¶
-
SBP_38_CALVES= 38¶
-
SBP_39_SHIELD= 39¶
-
SBP_40_TAIL= 40¶
-
SBP_41_LONGHAIR= 41¶
-
SBP_42_CIRCLET= 42¶
-
SBP_43_EARS= 43¶
-
SBP_44_DRAGON_BLOODHEAD_OR_MOD_MOUTH= 44¶
-
SBP_45_DRAGON_BLOODWINGL_OR_MOD_NECK= 45¶
-
SBP_46_DRAGON_BLOODWINGR_OR_MOD_CHEST_PRIMARY= 46¶
-
SBP_47_DRAGON_BLOODTAIL_OR_MOD_BACK= 47¶
-
SBP_48_MOD_MISC1= 48¶
-
SBP_49_MOD_PELVIS_PRIMARY= 49¶
-
SBP_50_DECAPITATEDHEAD= 50¶
-
SBP_51_DECAPITATE= 51¶
-
SBP_52_MOD_PELVIS_SECONDARY= 52¶
-
SBP_53_MOD_LEG_RIGHT= 53¶
-
SBP_54_MOD_LEG_LEFT= 54¶
-
SBP_55_MOD_FACE_JEWELRY= 55¶
-
SBP_56_MOD_CHEST_SECONDARY= 56¶
-
SBP_57_MOD_SHOULDER= 57¶
-
SBP_58_MOD_ARM_LEFT= 58¶
-
SBP_59_MOD_ARM_RIGHT= 59¶
-
SBP_60_MOD_MISC2= 60¶
-
SBP_61_FX01= 61¶
-
-
class
BSDismemberSkinInstance(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._BSDismemberSkinInstance,object
-
class
BSDistantTreeShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPropertyBethesda-specific node.
-
class
BSEffectShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertySkyrim non-PP shader model, used primarily for transparency effects, often as decal.
-
property
emissive_color¶
-
property
emissive_multiple¶
-
property
falloff_start_angle¶
-
property
falloff_start_opacity¶
-
property
falloff_stop_angle¶
-
property
falloff_stop_opacity¶
-
property
greyscale_texture¶
-
property
shader_flags_1¶
-
property
shader_flags_2¶
-
property
soft_falloff_depth¶
-
property
source_texture¶
-
property
texture_clamp_mode¶
-
property
uv_offset¶
-
property
uv_scale¶
-
property
-
class
BSEffectShaderPropertyColorController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerThis controller is used to animate colors in BSEffectShaderProperty.
-
property
type_of_controlled_color¶
-
property
-
class
BSEffectShaderPropertyFloatController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerThis controller is used to animate float variables in BSEffectShaderProperty.
-
property
type_of_controlled_variable¶
-
property
-
class
BSFadeNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-specific fade node.
-
class
BSFrustumFOVController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerBethesda-specific node.
-
property
interpolator¶
-
property
-
class
BSFurnitureMarker(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown. Marks furniture sitting positions?
-
property
num_positions¶
-
property
positions¶
-
property
-
class
BSFurnitureMarkerNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSFurnitureMarkerFurniture Marker for actors
-
class
BSInvMarker(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataOrientation marker for Skyrim’s inventory view. How to show the nif in the player’s inventory. Typically attached to the root node of the nif tree. If not present, then Skyrim will still show the nif in inventory, using the default values. Name should be ‘INV’ (without the quotes). For rotations, a short of “4712” appears as “4.712” but “959” appears as “0.959” meshesweaponsdaedricdaedricbowskinned.nif
-
property
rotation_x¶
-
property
rotation_y¶
-
property
rotation_z¶
-
property
zoom¶
-
property
-
class
BSKeyframeController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiKeyframeControllerAn extended keyframe controller.
-
property
data_2¶
-
property
-
class
BSLODTriShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriBasedGeomA variation on NiTriShape, for visibility control over vertex groups.
-
property
level_0_size¶
-
property
level_1_size¶
-
property
level_2_size¶
-
property
-
class
BSLagBoneController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerA controller that trails a bone behind an actor.
-
property
linear_rotation¶
-
property
linear_velocity¶
-
property
maximum_distance¶
-
property
-
class
BSLeafAnimNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeUnknown, related to trees.
-
class
BSLightingShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertySkyrim PP shader for assigning material/shader/texture.
-
property
alpha¶
-
property
emissive_color¶
-
property
emissive_multiple¶
-
property
environment_map_scale¶
-
property
eye_cubemap_scale¶
-
property
glossiness¶
-
property
hair_tint_color¶
-
property
left_eye_reflection_center¶
-
property
lighting_effect_1¶
-
property
lighting_effect_2¶
-
property
max_passes¶
-
property
parallax_envmap_strength¶
-
property
parallax_inner_layer_texture_scale¶
-
property
parallax_inner_layer_thickness¶
-
property
parallax_refraction_scale¶
-
property
refraction_strength¶
-
property
right_eye_reflection_center¶
-
property
scale¶
-
property
shader_flags_1¶
-
property
shader_flags_2¶
-
property
skin_tint_color¶
-
property
sparkle_parameters¶
-
property
specular_color¶
-
property
specular_strength¶
-
property
texture_clamp_mode¶
-
property
texture_set¶
-
property
uv_offset¶
-
property
uv_scale¶
-
property
-
class
BSLightingShaderPropertyColorController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerThis controller is used to animate colors in BSLightingShaderProperty.
-
property
type_of_controlled_color¶
-
property
-
class
BSLightingShaderPropertyFloatController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerThis controller is used to animate float variables in BSLightingShaderProperty.
-
property
type_of_controlled_variable¶
-
property
-
class
BSLightingShaderPropertyShaderType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseValues for configuring the shader type in a BSLightingShaderProperty
-
Default= 0¶
-
Heightmap= 3¶
-
WorldMap1= 9¶
-
WorldMap2= 13¶
-
WorldMap3= 15¶
-
WorldMap4= 18¶
-
-
class
BSMasterParticleSystem(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-Specific node.
-
property
max_emitter_objects¶
-
property
num_particle_systems¶
-
property
particle_systems¶
-
property
-
class
BSMaterialEmittanceMultController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerBethesda-Specific node.
-
class
BSMultiBound(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectBethesda-specific node.
-
property
data¶
-
property
-
class
BSMultiBoundAABB(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSMultiBoundDataBethesda-specific node.
-
property
extent¶
-
property
position¶
-
property
-
class
BSMultiBoundData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectAbstract base type for bounding data.
-
class
BSMultiBoundNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-specific node.
-
property
multi_bound¶
-
property
unknown_int¶
-
property
-
class
BSMultiBoundOBB(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSMultiBoundDataOriented bounding box.
-
property
center¶
-
property
rotation¶
-
property
size¶
-
property
-
class
BSMultiBoundSphere(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSMultiBoundDataBethesda-specific node.
-
property
radius¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
-
class
BSNiAlphaPropertyTestRefController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAlphaControllerUnkown
-
class
BSOrderedNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-Specific node.
-
property
alpha_sort_bound¶
-
property
is_static_bound¶
-
property
-
class
BSPSysArrayEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysVolumeEmitterParticle emitter that uses a node, its children and subchildren to emit from. Emission will be evenly spread along points from nodes leading to their direct parents/children only.
-
class
BSPSysHavokUpdateModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifier-
property
modifier¶
-
property
nodes¶
-
property
num_nodes¶
-
property
-
class
BSPSysInheritVelocityModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifier-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_int_1¶
-
property
-
class
BSPSysLODModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifier-
property
uknown_float_1¶
-
property
uknown_float_2¶
-
property
uknown_float_3¶
-
property
uknown_float_4¶
-
property
-
class
BSPSysMultiTargetEmitterCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlrParticle system (multi?) emitter controller.
-
property
data¶
-
property
unknown_int_1¶
-
property
unknown_short_1¶
-
property
visibility_interpolator¶
-
property
-
class
BSPSysRecycleBoundModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifier-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
unknown_float_5¶
-
property
unknown_float_6¶
-
property
unknown_int_1¶
-
property
-
class
BSPSysScaleModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifier-
property
floats¶
-
property
num_floats¶
-
property
-
class
BSPSysSimpleColorModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierBethesda-Specific Particle node.
-
property
color_1_end_percent¶
-
property
color_1_start_percent¶
-
property
color_2_end_percent¶
-
property
color_2_start_percent¶
-
property
colors¶
-
property
fade_in_percent¶
-
property
fade_out_percent¶
-
property
-
class
BSPSysStripUpdateModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierBethesda-Specific (mesh?) Particle System Modifier.
-
property
update_delta_time¶
-
property
-
class
BSPSysSubTexModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierSimilar to a Flip Controller, this handles particle texture animation on a single texture atlas
-
property
end_frame¶
-
property
frame_count¶
-
property
frame_count_fudge¶
-
property
loop_start_frame¶
-
property
loop_start_frame_fudge¶
-
property
start_frame¶
-
property
start_frame_fudge¶
-
property
-
class
BSPackedAdditionalDataBlock(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
atom_sizes¶
-
property
block_offsets¶
-
property
data¶
-
property
has_data¶
-
property
num_atoms¶
-
property
num_blocks¶
-
property
num_total_bytes¶
-
property
num_total_bytes_per_element¶
-
property
unknown_int_1¶
-
property
-
class
BSPackedAdditionalGeometryData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.AbstractAdditionalGeometryData-
property
block_infos¶
-
property
blocks¶
-
property
num_block_infos¶
-
property
num_blocks¶
-
property
num_vertices¶
-
property
-
class
BSParentVelocityModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierParticle modifier that adds a blend of object space translation and rotation to particles born in world space.
-
property
damping¶
-
property
-
class
BSPartFlag(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseEditor flags for the Body Partitions.
-
property
pf_editor_visible¶
-
property
pf_start_net_boneset¶
-
property
reserved_bits_1¶
-
property
-
class
BSProceduralLightningController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerSkyrim, Paired with dummy TriShapes, this controller generates lightning shapes for special effects. First interpolator controls Generation.
-
property
byte_1¶
-
property
byte_2¶
-
property
byte_3¶
-
property
distance_weight¶
-
property
float_2¶
-
property
float_5¶
-
property
fork¶
-
property
interpolator_10¶
-
property
interpolator_2_mutation¶
-
property
interpolator_3¶
-
property
interpolator_4¶
-
property
interpolator_5¶
-
property
interpolator_6¶
-
property
interpolator_7¶
-
property
interpolator_8¶
-
property
interpolator_9_arc_offset¶
-
property
strip_width¶
-
property
unknown_short_1¶
-
property
unknown_short_2¶
-
property
unknown_short_3¶
-
property
-
class
BSRefractionFirePeriodController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerBethesda-specific node.
-
property
interpolator¶
-
property
-
class
BSRefractionStrengthController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerBethesda-Specific node.
-
class
BSRotAccumTransfInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTransformInterpolator
-
class
BSSegment(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseBethesda-specific node.
-
property
flags¶
-
property
internal_index¶
-
property
unknown_byte_1¶
-
property
-
class
BSSegmentFlags(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseAn unsigned 32-bit integer, describing what’s inside the segment.
-
property
bsseg_water¶
-
property
reserved_bits_0¶
-
property
-
class
BSSegmentedTriShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriShapeBethesda-specific node.
-
property
num_segments¶
-
property
segment¶
-
property
-
class
BSShaderFlags(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseShader Property Flags
-
property
sf_alpha_texture¶
-
property
sf_decal_single_pass¶
-
property
sf_dynamic_alpha¶
-
property
sf_dynamic_decal_single_pass¶
-
property
sf_empty¶
-
property
sf_environment_mapping¶
-
property
sf_external_emittance¶
-
property
sf_eye_environment_mapping¶
-
property
sf_face_gen¶
-
property
sf_fire_refraction¶
-
property
sf_hair¶
-
property
sf_localmap_hide_secret¶
-
property
sf_low_detail¶
-
property
sf_multiple_textures¶
-
property
sf_non_projective_shadows¶
-
property
sf_parallax_occulsion¶
-
property
sf_parallax_shader_index_15¶
-
property
sf_refraction¶
-
property
sf_remappable_textures¶
-
property
sf_shadow_frustum¶
-
property
sf_shadow_map¶
-
property
sf_single_pass¶
-
property
sf_skinned¶
-
property
sf_specular¶
-
property
sf_tree_billboard¶
-
property
sf_unknown_1¶
-
property
sf_unknown_2¶
-
property
sf_unknown_3¶
-
property
sf_unknown_4¶
-
property
sf_vertex_alpha¶
-
property
sf_window_environment_mapping¶
-
property
sf_z_buffer_test¶
-
property
-
class
BSShaderFlags2(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseShader Property Flags 2
-
property
sf_2_1_st_light_is_point_light¶
-
property
sf_2_2_nd_light¶
-
property
sf_2_3_rd_light¶
-
property
sf_2_alpha_decal¶
-
property
sf_2_billboard_and_envmap_light_fade¶
-
property
sf_2_envmap_light_fade¶
-
property
sf_2_fit_slope¶
-
property
sf_2_lod_building¶
-
property
sf_2_lod_landscape¶
-
property
sf_2_no_fade¶
-
property
sf_2_no_lod_land_blend¶
-
property
sf_2_no_transparecny_multisampling¶
-
property
sf_2_premult_alpha¶
-
property
sf_2_refraction_tint¶
-
property
sf_2_show_in_local_map¶
-
property
sf_2_skip_normal_maps¶
-
property
sf_2_uniform_scale¶
-
property
sf_2_unknown_1¶
-
property
sf_2_unknown_10¶
-
property
sf_2_unknown_2¶
-
property
sf_2_unknown_3¶
-
property
sf_2_unknown_4¶
-
property
sf_2_unknown_5¶
-
property
sf_2_unknown_6¶
-
property
sf_2_unknown_7¶
-
property
sf_2_unknown_8¶
-
property
sf_2_unknown_9¶
-
property
sf_2_vats_selection¶
-
property
sf_2_vertex_colors¶
-
property
sf_2_vertex_lighting¶
-
property
sf_2_wireframe¶
-
property
sf_2_z_buffer_write¶
-
property
-
class
BSShaderLightingProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPropertyBethesda-specific property.
-
property
texture_clamp_mode¶
-
property
-
class
BSShaderNoLightingProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderLightingPropertyBethesda-specific property.
-
property
falloff_start_angle¶
-
property
falloff_start_opacity¶
-
property
falloff_stop_angle¶
-
property
falloff_stop_opacity¶
-
property
file_name¶
-
property
-
class
BSShaderPPLightingProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderLightingPropertyBethesda-specific Shade node.
-
property
emissive_color¶
-
property
refraction_fire_period¶
-
property
refraction_strength¶
-
property
texture_set¶
-
property
unknown_float_4¶
-
property
unknown_float_5¶
-
property
-
class
BSShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyBethesda-specific Property node
-
property
environment_map_scale¶
-
property
shader_flags¶
-
property
shader_flags_2¶
-
property
shader_type¶
-
property
smooth¶
-
property
-
class
BSShaderTextureSet(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectBethesda-specific Texture Set.
-
property
num_textures¶
-
property
textures¶
-
property
-
class
BSShaderType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe type of animation interpolation (blending) that will be used on the associated key frames.
-
SHADER_DEFAULT= 1¶
-
SHADER_LIGHTING30= 29¶
-
SHADER_NOLIGHTING= 33¶
-
SHADER_SKIN= 14¶
-
SHADER_SKY= 10¶
-
SHADER_TALL_GRASS= 0¶
-
SHADER_TILE= 32¶
-
SHADER_WATER= 17¶
-
-
class
BSSkyShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertySkyrim Sky shader block.
-
property
shader_flags_1¶
-
property
shader_flags_2¶
-
property
sky_object_type¶
-
property
source_texture¶
-
property
uv_offset¶
-
property
uv_scale¶
-
property
-
class
BSStripPSysData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysDataBethesda-Specific (mesh?) Particle System Data.
-
property
unknown_byte_6¶
-
property
unknown_float_8¶
-
property
unknown_int_7¶
-
property
unknown_short_5¶
-
property
-
class
BSStripParticleSystem(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleSystemBethesda-Specific (mesh?) Particle System.
-
class
BSTreadTransfInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpolatorBethesda-specific node.
-
property
data¶
-
property
num_tread_transforms¶
-
property
tread_transforms¶
-
property
-
class
BSTreadTransform(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseBethesda-specific node.
-
property
name¶
-
property
transform_1¶
-
property
transform_2¶
-
property
-
class
BSTreadTransformData(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseBethesda-specific node.
-
property
rotation¶
-
property
scale¶
-
property
translation¶
-
property
-
class
BSTreeNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeNode for handling Trees, Switches branch configurations for variation?
-
property
bones¶
-
property
bones_1¶
-
property
num_bones_1¶
-
property
num_bones_2¶
-
property
-
class
BSValueNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-Specific node. Found on fxFire effects
-
property
unknown_byte¶
-
property
value¶
-
property
-
class
BSWArray(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataBethesda-specific node.
-
property
items¶
-
property
num_items¶
-
property
-
class
BSWaterShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertySkyrim water shader property, different from “WaterShaderProperty” seen in Fallout.
-
property
shader_flags_1¶
-
property
shader_flags_2¶
-
property
unknown_short_3¶
-
property
uv_offset¶
-
property
uv_scale¶
-
property
water_direction¶
-
property
water_shader_flags¶
-
property
-
class
BSWindModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierParticle Modifier that uses the wind value from the gamedata to alter the path of particles.
-
property
strength¶
-
property
-
class
BSXFlags(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiIntegerExtraDataControls animation and collision. Integer holds flags: Bit 0 : enable havok, bAnimated(Skyrim) Bit 1 : enable collision, bHavok(Skyrim) Bit 2 : is skeleton nif?, bRagdoll(Skyrim) Bit 3 : enable animation, bComplex(Skyrim) Bit 4 : FlameNodes present, bAddon(Skyrim) Bit 5 : EditorMarkers present Bit 6 : bDynamic(Skyrim) Bit 7 : bArticulated(Skyrim) Bit 8 : bIKTarget(Skyrim) Bit 9 : Unknown(Skyrim)
-
class
BallAndSocketDescriptor(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
unknown_4_bytes¶
-
property
unknown_floats_1¶
-
property
unknown_floats_2¶
-
property
unknown_int_1¶
-
property
-
class
BillboardMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDetermines the way the billboard will react to the camera. Billboard mode is stored in lowest 3 bits although Oblivion vanilla nifs uses values higher than 7.
-
ALWAYS_FACE_CAMERA= 0¶
-
ALWAYS_FACE_CENTER= 3¶
-
BSROTATE_ABOUT_UP= 5¶
-
RIGID_FACE_CAMERA= 2¶
-
RIGID_FACE_CENTER= 4¶
-
ROTATE_ABOUT_UP= 1¶
-
ROTATE_ABOUT_UP2= 9¶
-
-
BlockTypeIndex¶ alias of
pyffi.object_models.common.UShort
-
class
BodyPartList(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseBody part list for DismemberSkinInstance
-
property
body_part¶
-
property
part_flag¶
-
property
-
class
BoneLOD(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseStores Bone Level of Detail info in a BSBoneLODExtraData
-
property
bone_name¶
-
property
distance¶
-
property
-
class
BoundVolumeType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
BASE_BV= 4294967295¶
-
BOX_BV= 1¶
-
CAPSULE_BV= 2¶
-
HALFSPACE_BV= 5¶
-
SPHERE_BV= 0¶
-
UNION_BV= 4¶
-
-
class
BoundingBox(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseBounding box.
-
property
radius¶
-
property
rotation¶
-
property
translation¶
-
property
unknown_int¶
-
property
-
class
BoundingVolume(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
box¶
-
property
capsule¶
-
property
collision_type¶
-
property
half_space¶
-
property
sphere¶
-
property
union¶
-
property
-
class
BoxBV(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseBox Bounding Volume
-
property
axis¶
-
property
center¶
-
property
extent¶
-
property
-
class
ByteArray(**kwargs)[source]¶ Bases:
pyffi.object_models.xml.basic.BasicBaseArray (list) of bytes. Implemented as basic type to speed up reading and also to prevent data to be dumped by __str__.
-
class
ByteColor3(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA color without alpha (red, green, blue).
-
property
b¶
-
property
g¶
-
property
r¶
-
property
-
class
ByteColor4(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA color with alpha (red, green, blue, alpha).
-
property
a¶
-
property
b¶
-
property
g¶
-
property
r¶
-
property
-
class
ByteMatrix(**kwargs)[source]¶ Bases:
pyffi.object_models.xml.basic.BasicBaseMatrix of bytes. Implemented as basic type to speed up reading and to prevent data being dumped by __str__.
-
class
CStreamableAssetData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
root¶
-
property
unknown_bytes¶
-
property
-
class
CapsuleBV(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseCapsule Bounding Volume
-
property
center¶
-
property
origin¶
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
-
class
ChannelConvention(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
CC_COMPRESSED= 4¶
-
CC_EMPTY= 5¶
-
CC_FIXED= 0¶
-
CC_INDEX= 3¶
-
-
class
ChannelData(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseChannel data
-
property
bits_per_channel¶
-
property
convention¶
-
property
type¶
-
property
unknown_byte_1¶
-
property
-
class
ChannelType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
CHNL_ALPHA= 3¶
-
CHNL_BLUE= 2¶
-
CHNL_COMPRESSED= 4¶
-
CHNL_EMPTY= 19¶
-
CHNL_GREEN= 1¶
-
CHNL_INDEX= 16¶
-
CHNL_RED= 0¶
-
-
class
CloningBehavior(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSets how objects are to be cloned.
-
CLONING_BLANK_COPY= 2¶
-
CLONING_COPY= 1¶
-
CLONING_SHARE= 0¶
-
-
class
CollisionMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
CM_NOTEST= 3¶
-
CM_USE_ABV= 2¶
-
CM_USE_NIBOUND= 4¶
-
CM_USE_OBB= 0¶
-
CM_USE_TRI= 1¶
-
-
class
Color3(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA color without alpha (red, green, blue).
-
property
b¶
-
property
g¶
-
property
r¶
-
property
-
class
Color4(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA color with alpha (red, green, blue, alpha).
-
property
a¶
-
property
b¶
-
property
g¶
-
property
r¶
-
property
-
class
ComponentFormat(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe data format of components.
-
F_FLOAT16_1= 66097¶
-
F_FLOAT16_2= 131634¶
-
F_FLOAT16_3= 197171¶
-
F_FLOAT16_4= 262708¶
-
F_FLOAT32_1= 66613¶
-
F_FLOAT32_2= 132150¶
-
F_FLOAT32_3= 197687¶
-
F_FLOAT32_4= 263224¶
-
F_INT16_1= 66065¶
-
F_INT16_2= 131602¶
-
F_INT16_3= 197139¶
-
F_INT16_4= 262676¶
-
F_INT32_1= 66593¶
-
F_INT32_2= 132130¶
-
F_INT32_3= 197667¶
-
F_INT32_4= 263204¶
-
F_INT8_1= 65793¶
-
F_INT8_2= 131330¶
-
F_INT8_3= 196867¶
-
F_INT8_4= 262404¶
-
F_NORMINT16_1= 66073¶
-
F_NORMINT16_2= 131610¶
-
F_NORMINT16_3= 197147¶
-
F_NORMINT16_4= 262684¶
-
F_NORMINT32_1= 66601¶
-
F_NORMINT32_2= 132138¶
-
F_NORMINT32_3= 197675¶
-
F_NORMINT32_4= 263212¶
-
F_NORMINT8_1= 65801¶
-
F_NORMINT8_2= 131338¶
-
F_NORMINT8_3= 196875¶
-
F_NORMINT8_4= 262412¶
-
F_NORMINT_10_10_10_2= 66621¶
-
F_NORMINT_10_10_10_L1= 66618¶
-
F_NORMINT_11_11_10= 66619¶
-
F_NORMUINT16_1= 66077¶
-
F_NORMUINT16_2= 131614¶
-
F_NORMUINT16_3= 197151¶
-
F_NORMUINT16_4= 262688¶
-
F_NORMUINT32_1= 66605¶
-
F_NORMUINT32_2= 132142¶
-
F_NORMUINT32_3= 197679¶
-
F_NORMUINT32_4= 263216¶
-
F_NORMUINT8_1= 65805¶
-
F_NORMUINT8_2= 131342¶
-
F_NORMUINT8_3= 196879¶
-
F_NORMUINT8_4= 262416¶
-
F_NORMUINT8_4_BGRA= 262460¶
-
F_UINT16_1= 66069¶
-
F_UINT16_2= 131606¶
-
F_UINT16_3= 197143¶
-
F_UINT16_4= 262680¶
-
F_UINT32_1= 66597¶
-
F_UINT32_2= 132134¶
-
F_UINT32_3= 197671¶
-
F_UINT32_4= 263208¶
-
F_UINT8_1= 65797¶
-
F_UINT8_2= 131334¶
-
F_UINT8_3= 196871¶
-
F_UINT8_4= 262408¶
-
F_UINT_10_10_10_2= 66622¶
-
F_UINT_10_10_10_L1= 66617¶
-
F_UNKNOWN= 0¶
-
-
class
ConsistencyType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseUsed by NiGeometryData to control the volatility of the mesh. While they appear to be flags they behave as an enum.
-
CT_MUTABLE= 0¶
-
CT_STATIC= 16384¶
-
CT_VOLATILE= 32768¶
-
-
class
ControllerLink(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._ControllerLink,object>>> from pyffi.formats.nif import NifFormat >>> link = NifFormat.ControllerLink() >>> link.node_name_offset -1 >>> link.set_node_name("Bip01") >>> link.node_name_offset 0 >>> link.get_node_name() b'Bip01' >>> link.node_name b'Bip01' >>> link.set_node_name("Bip01 Tail") >>> link.node_name_offset 6 >>> link.get_node_name() b'Bip01 Tail' >>> link.node_name b'Bip01 Tail'
-
get_node_name()[source]¶ Return the node name.
>>> # a doctest >>> from pyffi.formats.nif import NifFormat >>> link = NifFormat.ControllerLink() >>> link.string_palette = NifFormat.NiStringPalette() >>> palette = link.string_palette.palette >>> link.node_name_offset = palette.add_string("Bip01") >>> link.get_node_name() b'Bip01'
>>> # another doctest >>> from pyffi.formats.nif import NifFormat >>> link = NifFormat.ControllerLink() >>> link.node_name = "Bip01" >>> link.get_node_name() b'Bip01'
-
-
class
CoordGenType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDetermines the way that UV texture coordinates are generated.
-
CG_DIFFUSE_CUBE_MAP= 4¶
-
CG_SPECULAR_CUBE_MAP= 3¶
-
CG_SPHERE_MAP= 2¶
-
CG_WORLD_PARALLEL= 0¶
-
CG_WORLD_PERSPECTIVE= 1¶
-
-
class
CycleType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe animation cyle behavior.
-
CYCLE_CLAMP= 2¶
-
CYCLE_LOOP= 0¶
-
CYCLE_REVERSE= 1¶
-
-
class
Data(version=67108866, user_version=0, user_version_2=0)[source]¶ Bases:
pyffi.object_models.DataA class to contain the actual nif data.
Note that L{header} and L{blocks} are not automatically kept in sync with the rest of the nif data, but they are resynchronized when calling L{write}.
- Variables
version – The nif version.
user_version – The nif user version.
user_version_2 – The nif user version 2.
roots – List of root blocks.
header – The nif header.
blocks – List of blocks.
modification – Neo Steam (“neosteam”) or Ndoors (“ndoors”) or Joymaster Interactive Howling Sword (“jmihs1”) or Laxe Lore (“laxelore”) style nif?
-
get_detail_child_names(edge_filter=(True, True))[source]¶ Generator which yields all child names of this item in the detail view.
Override this method if the node has children.
- Returns
Generator for detail tree child names.
- Return type
generator yielding
strs
-
get_detail_child_nodes(edge_filter=(True, True))[source]¶ Generator which yields all children of this item in the detail view (by default, all acyclic and active ones).
Override this method if the node has children.
- Parameters
edge_filter (
EdgeFilterortype(None)) – The edge type to include.- Returns
Generator for detail tree child nodes.
- Return type
generator yielding
DetailNodes
-
get_global_child_nodes(edge_filter=(True, True))[source]¶ Generator which yields all children of this item in the global view, of given edge type (default is edges of type 0).
Override this method.
- Returns
Generator for global node children.
-
inspect(stream)[source]¶ Quickly checks whether the stream appears to contain nif data, and read the nif header. Resets stream to original position.
Call this function if you only need to inspect the header of the nif.
- Parameters
stream (
file) – The file to inspect.
-
inspect_version_only(stream)[source]¶ This function checks the version only, and is faster than the usual inspect function (which reads the full header). Sets the L{version} and L{user_version} instance variables if the stream contains a valid NIF file.
Call this function if you simply wish to check that a file is a NIF file without having to parse even the header.
- Raises
ValueError – If the stream does not contain a NIF file.
- Parameters
stream (
file) – The stream from which to read.
-
read(stream)[source]¶ Read a NIF file. Does not reset stream position.
- Parameters
stream (
file) – The stream from which to read.
-
replace_global_node(oldbranch, newbranch, edge_filter=(True, True))[source]¶ Replace a particular branch in the graph.
-
property
user_version¶
-
property
user_version_2¶
-
property
version¶
-
class
DataStreamAccess(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseDetermines how the data stream is accessed?
-
property
cpu_read¶
-
property
cpu_write_mutable¶
-
property
cpu_write_static¶
-
property
cpu_write_static_inititialized¶
-
property
cpu_write_volatile¶
-
property
gpu_read¶
-
property
gpu_write¶
-
property
-
class
DataStreamUsage(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDetermines how a data stream is used?
-
USAGE_SHADER_CONSTANT= 2¶
-
USAGE_USER= 3¶
-
USAGE_VERTEX= 1¶
-
USAGE_VERTEX_INDEX= 0¶
-
-
class
DeactivatorType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
DEACTIVATOR_INVALID= 0¶
-
DEACTIVATOR_NEVER= 1¶
-
DEACTIVATOR_SPATIAL= 2¶
-
-
class
DecalVectorArray(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseArray of Vectors for Decal placement in BSDecalPlacementVectorExtraData.
-
property
normals¶
-
property
num_vectors¶
-
property
points¶
-
property
-
class
DecayType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDetermines decay function. Used by NiPSysBombModifier.
-
DECAY_EXPONENTIAL= 2¶
-
DECAY_LINEAR= 1¶
-
DECAY_NONE= 0¶
-
-
class
DistantLODShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPropertyBethesda-specific node.
-
EPSILON= 0.0001¶
-
class
EffectShaderControlledColor(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing which color in BSEffectShaderProperty to animate.
-
class
EffectShaderControlledVariable(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing which float variable in BSEffectShaderProperty to animate.
-
EmissiveMultiple= 0¶
-
-
class
EffectType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe type of information that’s store in a texture used by a NiTextureEffect.
-
EFFECT_ENVIRONMENT_MAP= 2¶
-
EFFECT_FOG_MAP= 3¶
-
EFFECT_PROJECTED_LIGHT= 0¶
-
EFFECT_PROJECTED_SHADOW= 1¶
-
-
class
ElementReference(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
normalize_flag¶
-
property
semantic¶
-
property
-
class
EmitFrom(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseControls which parts of the mesh that the particles are emitted from.
-
EMIT_FROM_EDGE_CENTER= 2¶
-
EMIT_FROM_EDGE_SURFACE= 4¶
-
EMIT_FROM_FACE_CENTER= 1¶
-
EMIT_FROM_FACE_SURFACE= 3¶
-
EMIT_FROM_VERTICES= 0¶
-
-
class
EndianType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
ENDIAN_BIG= 0¶
-
ENDIAN_LITTLE= 1¶
-
-
class
ExportInfo(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseInformation about how the file was exported
-
property
creator¶
-
property
export_info_1¶
-
property
export_info_2¶
-
property
unknown¶
-
property
-
class
ExtraMeshDataEpicMickey(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
unknown_int_4¶
-
property
unknown_int_5¶
-
property
unknown_int_6¶
-
property
-
class
ExtraMeshDataEpicMickey2(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
end¶
-
property
start¶
-
property
unknown_shorts¶
-
property
-
class
ExtraVectorsFlags(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
None= 0¶
-
Tangents_Bitangents= 16¶
-
-
class
FaceDrawMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThis enum lists the different face culling options.
-
DRAW_BOTH= 3¶
-
DRAW_CCW= 1¶
-
DRAW_CCW_OR_BOTH= 0¶
-
DRAW_CW= 2¶
-
-
class
Fallout3HavokMaterial(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseA material, used by havok shape objects in Fallout 3. Bit 5: flag for PLATFORM (for values 32-63 substract 32 to know material number) Bit 6: flag for STAIRS (for values 64-95 substract 64 to know material number) Bit 5+6: flag for STAIRS+PLATFORM (for values 96-127 substract 96 to know material number)
-
MAT_BABY_RATTLE= 30¶
-
MAT_BARREL= 23¶
-
MAT_BOTTLE= 24¶
-
MAT_BOTTLECAP= 14¶
-
MAT_BROKEN_CONCRETE= 19¶
-
MAT_CHAIN= 13¶
-
MAT_CLOTH= 1¶
-
MAT_DIRT= 2¶
-
MAT_ELEVATOR= 15¶
-
MAT_GLASS= 3¶
-
MAT_GRASS= 4¶
-
MAT_HEAVY_METAL= 11¶
-
MAT_HEAVY_STONE= 10¶
-
MAT_HEAVY_WOOD= 12¶
-
MAT_HOLLOW_METAL= 16¶
-
MAT_LUNCHBOX= 29¶
-
MAT_METAL= 5¶
-
MAT_ORGANIC= 6¶
-
MAT_PISTOL= 26¶
-
MAT_RIFLE= 27¶
-
MAT_RUBBER_BALL= 31¶
-
MAT_SAND= 18¶
-
MAT_SHEET_METAL= 17¶
-
MAT_SHOPPING_CART= 28¶
-
MAT_SKIN= 7¶
-
MAT_SODA_CAN= 25¶
-
MAT_STONE= 0¶
-
MAT_VEHICLE_BODY= 20¶
-
MAT_VEHICLE_PART_HOLLOW= 22¶
-
MAT_VEHICLE_PART_SOLID= 21¶
-
MAT_WATER= 8¶
-
MAT_WOOD= 9¶
-
-
class
Fallout3Layer(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSets mesh color in Fallout 3 GECK. Anything higher than 72 is also null.
-
ACOUSTIC_SPACE= 21¶
-
ACTORZONE= 22¶
-
ADDONARM= 71¶
-
ADDONCHEST= 70¶
-
ADDONHEAD= 69¶
-
ADDONLEG= 72¶
-
ANIM_STATIC= 2¶
-
AVOIDBOX= 31¶
-
BIPED= 29¶
-
BODY= 46¶
-
CAMERAPICK= 35¶
-
CAMERASPHERE= 33¶
-
CHAIN= 68¶
-
CHARCONTROLLER= 30¶
-
CLOUD_TRAP= 16¶
-
CLUTTER= 4¶
-
COLLISIONBOX= 32¶
-
CUSTOMPICK1= 39¶
-
CUSTOMPICK2= 40¶
-
DEBRIS_LARGE= 20¶
-
DEBRIS_SMALL= 19¶
-
DOORDETECTION= 34¶
-
DROPPINGPICK= 42¶
-
GASTRAP= 24¶
-
GROUND= 17¶
-
HEAD= 45¶
-
INVISIBLE_WALL= 27¶
-
ITEMPICK= 36¶
-
LINEOFSIGHT= 37¶
-
L_CALF= 53¶
-
L_FOOT= 54¶
-
L_FORE_ARM= 50¶
-
L_HAND= 51¶
-
L_THIGH= 52¶
-
L_UPPER_ARM= 49¶
-
NONCOLLIDABLE= 15¶
-
NULL= 43¶
-
OTHER= 44¶
-
PACK= 67¶
-
PATHPICK= 38¶
-
PONYTAIL= 65¶
-
PORTAL= 18¶
-
PROJECTILE= 6¶
-
PROJECTILEZONE= 23¶
-
PROPS= 10¶
-
QUIVER= 63¶
-
R_CALF= 59¶
-
R_FOOT= 60¶
-
R_FORE_ARM= 56¶
-
R_HAND= 57¶
-
R_THIGH= 58¶
-
R_UPPER_ARM= 55¶
-
SHELLCASING= 25¶
-
SHIELD= 62¶
-
SPELL= 7¶
-
SPELLEXPLOSION= 41¶
-
SPINE1= 47¶
-
SPINE2= 48¶
-
STATIC= 1¶
-
TAIL= 61¶
-
TERRAIN= 13¶
-
TRANSPARENT= 3¶
-
TRANSPARENT_SMALL= 26¶
-
TRANSPARENT_SMALL_ANIM= 28¶
-
TRAP= 14¶
-
TREES= 9¶
-
TRIGGER= 12¶
-
UNIDENTIFIED= 0¶
-
WATER= 11¶
-
WEAPON= 64¶
-
WING= 66¶
-
-
class
FieldType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe force field’s type.
-
FIELD_POINT= 1¶
-
FIELD_WIND= 0¶
-
-
class
FileVersion(**kwargs)[source]¶ Bases:
pyffi.object_models.common.UInt-
read(stream, data)[source]¶ Read value from stream.
- Parameters
stream (file) – The stream to read from.
-
Bases:
pyffi.formats.nif._Footer,objectRead structure from stream.
Write structure to stream.
-
class
ForceType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe type of force? May be more valid values.
-
FORCE_PLANAR= 0¶
-
FORCE_SPHERICAL= 1¶
-
FORCE_UNKNOWN= 2¶
-
-
class
FurnitureEntryPoints(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseFurniture entry points. It specifies the direction(s) from where the actor is able to enter (and leave) the position.
-
property
behind¶
-
property
front¶
-
property
left¶
-
property
right¶
-
property
up¶
-
property
-
class
FurniturePosition(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseDescribes a furniture position?
-
property
animation_type¶
-
property
entry_properties¶
-
property
heading¶
-
property
offset¶
-
property
orientation¶
-
property
position_ref_1¶
-
property
position_ref_2¶
-
property
-
class
FxButton(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.FxWidgetUnknown.
-
class
FxRadioButton(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.FxWidgetUnknown.
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
-
class
FxWidget(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeFiraxis-specific UI widgets?
-
property
unknown_292_bytes¶
-
property
unknown_3¶
-
property
-
class
HairShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPropertyBethesda-specific node.
-
class
HalfSpaceBV(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
center¶
-
property
normal¶
-
property
unknown_float_1¶
-
property
-
class
HavokColFilter(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseColFilter property for Havok. It contains Layer, Flags and Part Number
-
property
flags_and_part_number¶
-
property
layer¶
-
property
unknown_short¶
-
property
-
class
HavokMaterial(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
material¶
-
property
-
class
Header(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._Header,object-
has_block_type(block_type)[source]¶ Check if header has a particular block type.
- Raises
ValueError – If number of block types is zero (only nif versions 10.0.1.0 and up store block types in header).
- Parameters
block_type (L{NifFormat.NiObject}) – The block type.
- Returns
Trueif the header’s list of block types has the given block type, or a subclass of it.Falseotherwise.- Return type
bool
-
-
class
HeaderString(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.object_models.xml.basic.BasicBase-
get_hash(data=None)[source]¶ Returns a hash value (an immutable object) that can be used to identify the object uniquely.
-
static
version_string(version, modification=None)[source]¶ Transforms version number into a version string.
>>> NifFormat.HeaderString.version_string(0x03000300) 'NetImmerse File Format, Version 3.03' >>> NifFormat.HeaderString.version_string(0x03010000) 'NetImmerse File Format, Version 3.1' >>> NifFormat.HeaderString.version_string(0x0A000100) 'NetImmerse File Format, Version 10.0.1.0' >>> NifFormat.HeaderString.version_string(0x0A010000) 'Gamebryo File Format, Version 10.1.0.0' >>> NifFormat.HeaderString.version_string(0x0A010000, ... modification="neosteam") 'NS' >>> NifFormat.HeaderString.version_string(0x14020008, ... modification="ndoors") 'NDSNIF....@....@...., Version 20.2.0.8' >>> NifFormat.HeaderString.version_string(0x14030009, ... modification="jmihs1") 'Joymaster HS1 Object Format - (JMI), Version 20.3.0.9'
-
-
class
HingeDescriptor(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseThis constraint allows rotation about a specified axis.
-
property
axle_a¶
-
property
axle_b¶
-
property
perp_2_axle_in_a_1¶
-
property
perp_2_axle_in_a_2¶
-
property
perp_2_axle_in_b_1¶
-
property
perp_2_axle_in_b_2¶
-
property
pivot_a¶
-
property
pivot_b¶
-
property
-
class
ImageType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDetermines how the raw image data is stored in NiRawImageData.
-
RGB= 1¶
-
RGBA= 2¶
-
-
class
InertiaMatrix(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._InertiaMatrix,object
-
class
Key(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA generic key with support for interpolation. Type 1 is normal linear interpolation, type 2 has forward and backward tangents, and type 3 has tension, bias and continuity arguments. Note that color4 and byte always seem to be of type 1.
-
property
backward¶
-
property
forward¶
-
property
tbc¶
-
property
time¶
-
property
value¶
-
property
-
class
KeyGroup(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseArray of vector keys (anything that can be interpolated, except rotations).
-
property
interpolation¶
-
property
keys¶
-
property
num_keys¶
-
property
-
class
KeyType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe type of animation interpolation (blending) that will be used on the associated key frames.
-
CONST_KEY= 5¶
-
LINEAR_KEY= 1¶
-
QUADRATIC_KEY= 2¶
-
TBC_KEY= 3¶
-
XYZ_ROTATION_KEY= 4¶
-
-
class
LODRange(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseThe distance range where a specific level of detail applies.
-
property
far_extent¶
-
property
near_extent¶
-
property
unknown_ints¶
-
property
-
class
LightMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing how vertex colors influence lighting.
-
LIGHT_MODE_EMISSIVE= 0¶
-
LIGHT_MODE_EMI_AMB_DIF= 1¶
-
-
class
Lighting30ShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPPLightingPropertyBethesda-specific node.
-
class
LightingShaderControlledColor(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing which color in BSLightingShaderProperty to animate.
-
class
LightingShaderControlledVariable(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing which float variable in BSLightingShaderProperty to animate.
-
Alpha= 12¶
-
Glossiness= 9¶
-
-
class
LimitedHingeDescriptor(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._LimitedHingeDescriptor,object
-
class
LineString(**kwargs)[source]¶ Bases:
pyffi.object_models.xml.basic.BasicBaseBasic type for strings ending in a newline character (0x0a).
>>> from tempfile import TemporaryFile >>> f = TemporaryFile() >>> l = NifFormat.LineString() >>> f.write('abcdefg\x0a'.encode()) 8 >>> f.seek(0) 0 >>> l.read(f) >>> str(l) 'abcdefg' >>> f.seek(0) 0 >>> l.set_value('Hi There') >>> l.write(f) >>> f.seek(0) 0 >>> m = NifFormat.LineString() >>> m.read(f) >>> str(m) 'Hi There'
-
class
MTransform(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
rotation¶
-
property
scale¶
-
property
translation¶
-
property
-
class
MatchGroup(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseGroup of vertex indices of vertices that match.
-
property
num_vertices¶
-
property
vertex_indices¶
-
property
-
class
MaterialData(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseData stored per-material by NiRenderObject
-
property
material_extra_data¶
-
property
material_name¶
-
property
-
class
Matrix22(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA 2x2 matrix of float values. Stored in OpenGL column-major format.
-
property
m_11¶
-
property
m_12¶
-
property
m_21¶
-
property
m_22¶
-
property
-
class
Matrix33(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._Matrix33,object
-
class
Matrix44(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._Matrix44,object
-
class
MeshData(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
component_semantics¶
-
property
is_per_instance¶
-
property
num_components¶
-
property
num_submeshes¶
-
property
stream¶
-
property
submesh_to_region_map¶
-
property
-
class
MeshPrimitiveType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDescribes the type of primitives stored in a mesh object.
-
MESH_PRIMITIVE_LINESTRIPS= 2¶
-
MESH_PRIMITIVE_POINTS= 4¶
-
MESH_PRIMITIVE_QUADS= 3¶
-
MESH_PRIMITIVE_TRIANGLES= 0¶
-
MESH_PRIMITIVE_TRISTRIPS= 1¶
-
-
class
MipMap(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseDescription of a MipMap within a NiPixelData object.
-
property
height¶
-
property
offset¶
-
property
width¶
-
property
-
class
MipMapFormat(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing how mipmaps are handled in a texture.
-
MIP_FMT_DEFAULT= 2¶
-
MIP_FMT_NO= 0¶
-
MIP_FMT_YES= 1¶
-
-
class
MoppDataBuildType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseA byte describing if MOPP Data is organized into chunks (PS3) or not (PC)
-
BUILD_NOT_SET= 2¶
-
BUILT_WITHOUT_CHUNK_SUBDIVISION= 1¶
-
BUILT_WITH_CHUNK_SUBDIVISION= 0¶
-
-
class
Morph(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseGeometry morphing data component.
-
property
frame_name¶
-
property
interpolation¶
-
property
keys¶
-
property
num_keys¶
-
property
unknown_int¶
-
property
vectors¶
-
property
-
class
MorphWeight(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
interpolator¶
-
property
weight¶
-
property
-
class
MotionQuality(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe motion type. Determines quality of motion?
-
MO_QUAL_BULLET= 6¶
-
MO_QUAL_CHARACTER= 8¶
-
MO_QUAL_CRITICAL= 5¶
-
MO_QUAL_DEBRIS= 3¶
-
MO_QUAL_FIXED= 1¶
-
MO_QUAL_INVALID= 0¶
-
MO_QUAL_KEYFRAMED= 2¶
-
MO_QUAL_KEYFRAMED_REPORT= 9¶
-
MO_QUAL_MOVING= 4¶
-
MO_QUAL_USER= 7¶
-
-
class
MotionSystem(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe motion system. 4 (Box) is used for everything movable. 7 (Keyframed) is used on statics and animated stuff.
-
MO_SYS_BOX= 4¶
-
MO_SYS_BOX_STABILIZED= 5¶
-
MO_SYS_CHARACTER= 9¶
-
MO_SYS_DYNAMIC= 1¶
-
MO_SYS_FIXED= 7¶
-
MO_SYS_INVALID= 0¶
-
MO_SYS_KEYFRAMED= 6¶
-
MO_SYS_SPHERE= 2¶
-
MO_SYS_SPHERE_INERTIA= 3¶
-
MO_SYS_THIN_BOX= 8¶
-
-
class
MotorDescriptor(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
unknown_byte_1¶
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
unknown_float_5¶
-
property
unknown_float_6¶
-
property
-
class
MultiTextureElement(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
clamp¶
-
property
filter¶
-
property
has_image¶
-
property
image¶
-
property
ps_2_k¶
-
property
ps_2_l¶
-
property
unknown_short_3¶
-
property
uv_set¶
-
property
-
class
Ni3dsAlphaAnimator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown.
-
property
num_1¶
-
property
num_2¶
-
property
parent¶
-
property
unknown_1¶
-
property
unknown_2¶
-
property
-
class
Ni3dsAnimationNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown. Only found in 2.3 nifs.
-
property
child¶
-
property
count¶
-
property
has_data¶
-
property
name¶
-
property
unknown_array¶
-
property
unknown_floats_1¶
-
property
unknown_floats_2¶
-
property
unknown_short¶
-
property
-
class
Ni3dsColorAnimator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown!
-
property
unknown_1¶
-
property
-
class
Ni3dsMorphShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown!
-
property
unknown_1¶
-
property
-
class
Ni3dsParticleSystem(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown!
-
property
unknown_1¶
-
property
-
class
Ni3dsPathController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown!
-
property
unknown_1¶
-
property
-
class
NiAVObject(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiAVObject,object>>> from pyffi.formats.nif import NifFormat >>> node = NifFormat.NiNode() >>> prop1 = NifFormat.NiProperty() >>> prop1.name = "hello" >>> prop2 = NifFormat.NiProperty() >>> prop2.name = "world" >>> node.get_properties() [] >>> node.set_properties([prop1, prop2]) >>> [prop.name for prop in node.get_properties()] [b'hello', b'world'] >>> [prop.name for prop in node.properties] [b'hello', b'world'] >>> node.set_properties([]) >>> node.get_properties() [] >>> # now set them the other way around >>> node.set_properties([prop2, prop1]) >>> [prop.name for prop in node.get_properties()] [b'world', b'hello'] >>> [prop.name for prop in node.properties] [b'world', b'hello'] >>> node.remove_property(prop2) >>> [prop.name for prop in node.properties] [b'hello'] >>> node.add_property(prop2) >>> [prop.name for prop in node.properties] [b'hello', b'world']
-
add_property(prop)[source]¶ Add the given property to the property list.
- Parameters
prop (L{NifFormat.NiProperty}) – The property block to add.
-
get_properties()[source]¶ Return a list of the properties of the block.
- Returns
The list of properties.
- Return type
listof L{NifFormat.NiProperty}
-
get_transform(relative_to=None)[source]¶ Return scale, rotation, and translation into a single 4x4 matrix, relative to the C{relative_to} block (which should be another NiAVObject connecting to this block). If C{relative_to} is
None, then returns the transform stored in C{self}, or equivalently, the target is assumed to be the parent.- Parameters
relative_to – The block relative to which the transform must be calculated. If
None, the local transform is returned.
-
remove_property(prop)[source]¶ Remove the given property to the property list.
- Parameters
prop (L{NifFormat.NiProperty}) – The property block to remove.
-
-
class
NiAVObjectPalette(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown.
-
class
NiAdditionalGeometryData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.AbstractAdditionalGeometryData-
property
block_infos¶
-
property
blocks¶
-
property
num_block_infos¶
-
property
num_blocks¶
-
property
num_vertices¶
-
property
-
class
NiAlphaController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerTime controller for transparency.
-
property
data¶
-
property
-
class
NiAlphaProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyTransparency. Flags 0x00ED.
-
property
flags¶
-
property
threshold¶
-
property
unknown_int_2¶
-
property
unknown_short_1¶
-
property
-
class
NiAmbientLight(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiLightAmbient light source.
-
class
NiArkAnimationExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown node.
-
property
unknown_bytes¶
-
property
unknown_ints¶
-
property
-
class
NiArkImporterExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown node.
-
property
importer_name¶
-
property
unknown_bytes¶
-
property
unknown_floats¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
-
class
NiArkShaderExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown node.
-
property
unknown_int¶
-
property
unknown_string¶
-
property
-
class
NiArkTextureExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown node.
-
property
num_textures¶
-
property
textures¶
-
property
unknown_byte¶
-
property
unknown_int_2¶
-
property
unknown_ints_1¶
-
property
-
class
NiArkViewportInfoExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown node.
-
property
unknown_bytes¶
-
property
-
class
NiAutoNormalParticles(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticlesUnknown.
-
class
NiAutoNormalParticlesData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticlesDataParticle system data object (with automatic normals?).
-
class
NiBSAnimationNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeBethesda-specific extension of Node with animation properties stored in the flags, often 42?
-
class
NiBSBoneLODController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBoneLODControllerA simple LOD controller for bones.
-
class
NiBSPArrayController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleSystemControllerA particle system controller, used by BS in conjunction with NiBSParticleNode.
-
class
NiBSParticleNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeUnknown.
-
class
NiBSplineBasisData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectStores the number of control points of a B-spline.
-
property
num_control_points¶
-
property
-
class
NiBSplineCompFloatInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBSplineFloatInterpolatorUnknown.
-
property
base¶
-
property
bias¶
-
property
multiplier¶
-
property
offset¶
-
property
-
class
NiBSplineCompPoint3Interpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBSplinePoint3InterpolatorUnknown.
-
class
NiBSplineCompTransformEvaluator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject
-
class
NiBSplineCompTransformInterpolator(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiBSplineCompTransformInterpolator,object
-
class
NiBSplineData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiBSplineData,object>>> # a doctest >>> from pyffi.formats.nif import NifFormat >>> block = NifFormat.NiBSplineData() >>> block.num_short_control_points = 50 >>> block.short_control_points.update_size() >>> for i in range(block.num_short_control_points): ... block.short_control_points[i] = 20 - i >>> list(block.get_short_data(12, 4, 3)) [(8, 7, 6), (5, 4, 3), (2, 1, 0), (-1, -2, -3)] >>> offset = block.append_short_data([(1,2),(4,3),(13,14),(8,2),(33,33)]) >>> offset 50 >>> list(block.get_short_data(offset, 5, 2)) [(1, 2), (4, 3), (13, 14), (8, 2), (33, 33)] >>> list(block.get_comp_data(offset, 5, 2, 10.0, 32767.0)) [(11.0, 12.0), (14.0, 13.0), (23.0, 24.0), (18.0, 12.0), (43.0, 43.0)] >>> block.append_float_data([(1.0,2.0),(3.0,4.0),(0.5,0.25)]) 0 >>> list(block.get_float_data(0, 3, 2)) [(1.0, 2.0), (3.0, 4.0), (0.5, 0.25)] >>> block.append_comp_data([(1,2),(4,3)]) (60, 2.5, 1.5) >>> list(block.get_short_data(60, 2, 2)) [(-32767, -10922), (32767, 10922)] >>> list(block.get_comp_data(60, 2, 2, 2.5, 1.5)) [(1.0, 2.00...), (4.0, 2.99...)]
-
append_comp_data(data)[source]¶ Append data as compressed list.
- Parameters
data – A list of elements, where each element is a tuple of integers. (Note: cannot be an interator; maybe this restriction will be removed in a future version.)
- Returns
The offset, bias, and multiplier.
-
append_float_data(data)[source]¶ Append data.
- Parameters
data – A list of elements, where each element is a tuple of floats. (Note: cannot be an interator; maybe this restriction will be removed in a future version.)
- Returns
The offset at which the data was appended.
-
append_short_data(data)[source]¶ Append data.
- Parameters
data – A list of elements, where each element is a tuple of integers. (Note: cannot be an interator; maybe this restriction will be removed in a future version.)
- Returns
The offset at which the data was appended.
-
get_comp_data(offset, num_elements, element_size, bias, multiplier)[source]¶ Get an interator to the data, converted to float with extra bias and multiplication factor. If C{x} is the short value, then the returned value is C{bias + x * multiplier / 32767.0}.
- Parameters
offset – The offset in the data where to start.
num_elements – Number of elements to get.
element_size – Size of a single element.
bias – Value bias.
multiplier – Value multiplier.
- Returns
A list of C{num_elements} tuples of size C{element_size}.
-
-
class
NiBSplineFloatInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBSplineInterpolatorUnknown.
-
class
NiBSplineInterpolator(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiBSplineInterpolator,object
-
class
NiBSplinePoint3Interpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBSplineInterpolatorUnknown.
-
property
unknown_floats¶
-
property
-
class
NiBSplineTransformInterpolator(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiBSplineTransformInterpolator,object
-
class
NiBezierMesh(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAVObjectUnknown
-
property
bezier_triangle¶
-
property
count_1¶
-
property
count_2¶
-
property
data_2¶
-
property
num_bezier_triangles¶
-
property
points_1¶
-
property
points_2¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
-
class
NiBezierTriangle4(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectSub data of NiBezierMesh
-
property
matrix¶
-
property
unknown_1¶
-
property
unknown_2¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
vector_1¶
-
property
vector_2¶
-
property
-
class
NiBillboardNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeThese nodes will always be rotated to face the camera creating a billboard effect for any attached objects.
In pre-10.1.0.0 the Flags field is used for BillboardMode. Bit 0: hidden Bits 1-2: collision mode Bit 3: unknown (set in most official meshes) Bits 5-6: billboard mode
Collision modes: 00 NONE 01 USE_TRIANGLES 10 USE_OBBS 11 CONTINUE
Billboard modes: 00 ALWAYS_FACE_CAMERA 01 ROTATE_ABOUT_UP 10 RIGID_FACE_CAMERA 11 ALWAYS_FACE_CENTER
-
property
billboard_mode¶
-
property
-
class
NiBinaryExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataBinary extra data object. Used to store tangents and bitangents in Oblivion.
-
property
binary_data¶
-
property
-
class
NiBinaryVoxelData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectVoxel data object.
-
property
num_unknown_bytes_2¶
-
property
num_unknown_vectors¶
-
property
unknown_5_ints¶
-
property
unknown_7_floats¶
-
property
unknown_bytes_1¶
-
property
unknown_bytes_2¶
-
property
unknown_short_1¶
-
property
unknown_short_2¶
-
property
unknown_short_3¶
-
property
unknown_vectors¶
-
property
-
class
NiBinaryVoxelExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataVoxel extra data object.
-
property
data¶
-
property
unknown_int¶
-
property
-
class
NiBlendBoolInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBlendInterpolatorAn interpolator for a bool.
-
property
bool_value¶
-
property
-
class
NiBlendFloatInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBlendInterpolatorAn interpolator for a float.
-
property
float_value¶
-
property
-
class
NiBlendInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpolatorAn extended type of interpolater.
-
property
unknown_int¶
-
property
unknown_short¶
-
property
-
class
NiBlendPoint3Interpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBlendInterpolatorInterpolates a point?
-
property
point_value¶
-
property
-
class
NiBlendTransformInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBlendInterpolatorUnknown.
-
class
NiBone(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeA NiNode used as a skeleton bone?
-
class
NiBoneLODController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerLevel of detail controller for bones. Priority is arranged from low to high.
-
property
node_groups¶
-
property
num_node_groups¶
-
property
num_node_groups_2¶
-
property
num_shape_groups¶
-
property
num_shape_groups_2¶
-
property
shape_groups_1¶
-
property
shape_groups_2¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
-
class
NiBoolData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectTimed boolean data.
-
property
data¶
-
property
-
class
NiBoolInterpController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSingleInterpControllerA controller that interpolates floating point numbers?
-
class
NiBoolInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiKeyBasedInterpolatorUnknown.
-
property
bool_value¶
-
property
data¶
-
property
-
class
NiBoolTimelineInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBoolInterpolatorUnknown.
-
class
NiBooleanExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataBoolean extra data.
-
property
boolean_data¶
-
property
-
class
NiCamera(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAVObjectCamera object.
-
property
frustum_bottom¶
-
property
frustum_far¶
-
property
frustum_left¶
-
property
frustum_near¶
-
property
frustum_right¶
-
property
frustum_top¶
-
property
lod_adjust¶
-
property
unknown_int¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
unknown_link¶
-
property
unknown_short¶
-
property
use_orthographic_projection¶
-
property
viewport_bottom¶
-
property
viewport_left¶
-
property
viewport_right¶
-
property
viewport_top¶
-
property
-
class
NiClod(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriBasedGeomA shape node that holds continuous level of detail information. Seems to be specific to Freedom Force.
-
class
NiClodData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriBasedGeomDataHolds mesh data for continuous level of detail shapes. Pesumably a progressive mesh with triangles specified by edge splits. Seems to be specific to Freedom Force. The structure of this is uncertain and highly experimental at this point. No file with this data can currently be read properly.
-
property
unknown_clod_shorts_1¶
-
property
unknown_clod_shorts_2¶
-
property
unknown_clod_shorts_3¶
-
property
unknown_count_1¶
-
property
unknown_count_2¶
-
property
unknown_count_3¶
-
property
unknown_float¶
-
property
unknown_short¶
-
property
unknown_shorts¶
-
property
-
class
NiClodSkinInstance(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSkinInstanceA copy of NISkinInstance for use with NiClod meshes.
-
class
NiCollisionData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiCollisionObjectCollision box.
-
property
bounding_volume¶
-
property
collision_mode¶
-
property
propagation_mode¶
-
property
use_abv¶
-
property
-
class
NiCollisionObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectThis is the most common collision object found in NIF files. It acts as a real object that is visible and possibly (if the body allows for it) interactive. The node itself is simple, it only has three properties. For this type of collision object, bhkRigidBody or bhkRigidBodyT is generally used.
-
property
target¶
-
property
-
class
NiColorData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectColor data for material color controller.
-
property
data¶
-
property
-
class
NiColorExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown.
-
property
data¶
-
property
-
class
NiControllerManager(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerUnknown. Root of all controllers?
-
property
controller_sequences¶
-
property
cumulative¶
-
property
num_controller_sequences¶
-
property
object_palette¶
-
property
-
class
NiControllerSequence(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiControllerSequence,object
-
class
NiDataStream(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
access¶
-
property
cloning_behavior¶
-
property
component_formats¶
-
property
data¶
-
property
num_bytes¶
-
property
num_components¶
-
property
num_regions¶
-
property
regions¶
-
property
streamable¶
-
property
usage¶
-
property
-
class
NiDefaultAVObjectPalette(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAVObjectPaletteUnknown. Refers to a list of objects. Used by NiControllerManager.
-
property
num_objs¶
-
property
objs¶
-
property
unknown_int¶
-
property
-
class
NiDirectionalLight(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiLightDirectional light source.
-
class
NiDitherProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyUnknown.
-
property
flags¶
-
property
-
class
NiDynamicEffect(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAVObjectA dynamic effect such as a light or environment map.
-
property
affected_node_list_pointers¶
-
property
affected_nodes¶
-
property
num_affected_node_list_pointers¶
-
property
num_affected_nodes¶
-
property
switch_state¶
-
property
-
class
NiEnvMappedTriShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectNETUnknown
-
property
child_2¶
-
property
child_3¶
-
property
children¶
-
property
num_children¶
-
property
unknown_1¶
-
property
unknown_matrix¶
-
property
-
class
NiEnvMappedTriShapeData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriShapeDataHolds mesh data using a list of singular triangles.
-
class
NiExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectA generic extra data object.
-
property
name¶
-
property
next_extra_data¶
-
property
-
class
NiExtraDataController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSingleInterpControllerAn controller for extra data.
-
class
NiFlipController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerTexture flipping controller.
-
property
delta¶
-
property
images¶
-
property
num_sources¶
-
property
sources¶
-
property
texture_slot¶
-
property
unknown_int_2¶
-
property
-
class
NiFloatData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectPossibly the 1D position along a 3D path.
-
property
data¶
-
property
-
class
NiFloatExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataFloat extra data.
-
property
float_data¶
-
property
-
class
NiFloatExtraDataController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataControllerUnknown.
-
property
controller_data¶
-
property
num_extra_bytes¶
-
property
unknown_bytes¶
-
property
unknown_extra_bytes¶
-
property
-
class
NiFloatInterpController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSingleInterpControllerA controller that interpolates floating point numbers?
-
class
NiFloatInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiKeyBasedInterpolatorUnknown.
-
property
data¶
-
property
float_value¶
-
property
-
class
NiFloatsExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataUnknown.
-
property
data¶
-
property
num_floats¶
-
property
-
class
NiFogProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyDescribes… fog?
-
property
flags¶
-
property
fog_color¶
-
property
fog_depth¶
-
property
-
class
NiFurSpringController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeController-
property
bones¶
-
property
bones_2¶
-
property
num_bones¶
-
property
num_bones_2¶
-
property
unknown_float¶
-
property
unknown_float_2¶
-
property
-
class
NiGeomMorpherController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpControllerTime controller for geometry morphing.
-
property
always_update¶
-
property
data¶
-
property
extra_flags¶
-
property
interpolator_weights¶
-
property
interpolators¶
-
property
num_interpolators¶
-
property
num_unknown_ints¶
-
property
unknown_2¶
-
property
unknown_ints¶
-
property
-
class
NiGeometry(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiGeometry,object>>> from pyffi.formats.nif import NifFormat >>> id44 = NifFormat.Matrix44() >>> id44.set_identity() >>> skelroot = NifFormat.NiNode() >>> skelroot.name = 'skelroot' >>> skelroot.set_transform(id44) >>> bone1 = NifFormat.NiNode() >>> bone1.name = 'bone1' >>> bone1.set_transform(id44) >>> bone2 = NifFormat.NiNode() >>> bone2.name = 'bone2' >>> bone2.set_transform(id44) >>> bone21 = NifFormat.NiNode() >>> bone21.name = 'bone21' >>> bone21.set_transform(id44) >>> bone22 = NifFormat.NiNode() >>> bone22.name = 'bone22' >>> bone22.set_transform(id44) >>> bone211 = NifFormat.NiNode() >>> bone211.name = 'bone211' >>> bone211.set_transform(id44) >>> skelroot.add_child(bone1) >>> bone1.add_child(bone2) >>> bone2.add_child(bone21) >>> bone2.add_child(bone22) >>> bone21.add_child(bone211) >>> geom = NifFormat.NiTriShape() >>> geom.name = 'geom' >>> geom.set_transform(id44) >>> geomdata = NifFormat.NiTriShapeData() >>> skininst = NifFormat.NiSkinInstance() >>> skindata = NifFormat.NiSkinData() >>> skelroot.add_child(geom) >>> geom.data = geomdata >>> geom.skin_instance = skininst >>> skininst.skeleton_root = skelroot >>> skininst.data = skindata >>> skininst.num_bones = 4 >>> skininst.bones.update_size() >>> skininst.bones[0] = bone1 >>> skininst.bones[1] = bone2 >>> skininst.bones[2] = bone22 >>> skininst.bones[3] = bone211 >>> skindata.num_bones = 4 >>> skindata.bone_list.update_size() >>> [child.name for child in skelroot.children] [b'bone1', b'geom'] >>> skindata.set_transform(id44) >>> for bonedata in skindata.bone_list: ... bonedata.set_transform(id44) >>> affectedbones = geom.flatten_skin() >>> [bone.name for bone in affectedbones] [b'bone1', b'bone2', b'bone22', b'bone211'] >>> [child.name for child in skelroot.children] [b'geom', b'bone1', b'bone21', b'bone2', b'bone22', b'bone211']
-
add_bone(bone, vert_weights)[source]¶ Add bone with given vertex weights. After adding all bones, the geometry skinning information should be set from the current position of the bones using the L{update_bind_position} function.
- Parameters
bone – The bone NiNode block.
vert_weights – A dictionary mapping each influenced vertex index to a vertex weight.
-
flatten_skin()[source]¶ Reposition all bone blocks and geometry block in the tree to be direct children of the skeleton root.
Returns list of all used bones by the skin.
-
get_skin_deformation()[source]¶ Returns a list of vertices and normals in their final position after skinning, in geometry space.
-
get_vertex_weights()[source]¶ Get vertex weights in a convenient format: list bone and weight per vertex.
-
send_bones_to_bind_position()[source]¶ Send all bones to their bind position.
- @deprecated: Use L{NifFormat.NiNode.send_bones_to_bind_position} instead of
this function.
-
update_bind_position()[source]¶ Make current position of the bones the bind position for this geometry.
Sets the NiSkinData overall transform to the inverse of the geometry transform relative to the skeleton root, and sets the NiSkinData of each bone to the geometry transform relative to the skeleton root times the inverse of the bone transform relative to the skeleton root.
-
-
class
NiGeometryData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiGeometryData,object>>> 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)
-
get_vertex_hash_generator(vertexprecision=3, normalprecision=3, uvprecision=5, vcolprecision=3)[source]¶ 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
- Returns
A generator yielding a hash value for each vertex.
-
-
class
NiGravity(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierA particle modifier; applies a gravitational field on the particles.
-
property
direction¶
-
property
force¶
-
property
position¶
-
property
type¶
-
property
unknown_float_1¶
-
property
-
class
NiImage(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
file_name¶
-
property
image_data¶
-
property
unknown_float¶
-
property
unknown_int¶
-
property
use_external¶
-
property
-
class
NiInstancingMeshModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiMeshModifier
-
class
NiIntegerExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataExtra integer data.
-
property
integer_data¶
-
property
-
class
NiIntegersExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataIntegers data.
-
property
data¶
-
property
num_integers¶
-
property
-
class
NiInterpController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerA controller capable of interpolation?
-
class
NiInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectInterpolator objects - function unknown.
-
class
NiKeyBasedInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpolatorInterpolator objects that use keys?
-
class
NiKeyframeController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSingleInterpControllerA time controller object for animation key frames.
-
property
data¶
-
property
-
class
NiKeyframeData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiKeyframeData,object
-
class
NiLODData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectAbstract class used for different types of LOD selections.
-
class
NiLODNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSwitchNodeLevel of detail selector. Links to different levels of detail of the same model, used to switch a geometry at a specified distance.
-
property
lod_center¶
-
property
lod_level_data¶
-
property
lod_levels¶
-
property
num_lod_levels¶
-
property
-
class
NiLight(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiDynamicEffectLight source.
-
property
ambient_color¶
-
property
diffuse_color¶
-
property
dimmer¶
-
property
specular_color¶
-
property
-
class
NiLightColorController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPoint3InterpControllerLight color animation controller.
-
class
NiLightDimmerController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerUnknown controller.
-
class
NiLightIntensityController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerUnknown controller
-
class
NiLines(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriBasedGeomWireframe geometry.
-
class
NiLinesData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiGeometryDataWireframe geometry data.
-
property
lines¶
-
property
-
class
NiLookAtController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerUnknown. Start time is 3.4e+38 and stop time is -3.4e+38.
-
property
look_at_node¶
-
property
unknown_1¶
-
property
-
class
NiLookAtInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpolatorUnknown.
-
property
look_at¶
-
property
rotation¶
-
property
scale¶
-
property
target¶
-
property
translation¶
-
property
unknown_link_1¶
-
property
unknown_link_2¶
-
property
unknown_link_3¶
-
property
unknown_short¶
-
property
-
class
NiMaterialColorController(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiMaterialColorController,object
-
class
NiMaterialProperty(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiMaterialProperty,object
-
class
NiMesh(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiRenderObject-
property
bound¶
-
property
datas¶
-
property
instancing_enabled¶
-
property
modifiers¶
-
property
num_datas¶
-
property
num_modifiers¶
-
property
num_submeshes¶
-
property
primitive_type¶
-
property
unknown_100¶
-
property
unknown_101¶
-
property
unknown_102¶
-
property
unknown_103¶
-
property
unknown_200¶
-
property
unknown_201¶
-
property
unknown_250¶
-
property
unknown_251¶
-
property
unknown_300¶
-
property
unknown_301¶
-
property
unknown_302¶
-
property
unknown_303¶
-
property
unknown_350¶
-
property
unknown_351¶
-
property
unknown_400¶
-
property
unknown_51¶
-
property
unknown_52¶
-
property
unknown_53¶
-
property
unknown_54¶
-
property
unknown_55¶
-
property
unknown_56¶
-
property
-
class
NiMeshHWInstance(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject
-
class
NiMeshModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectBase class for mesh modifiers.
-
property
complete_points¶
-
property
num_complete_points¶
-
property
num_submit_points¶
-
property
submit_points¶
-
property
-
class
NiMeshPSysData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysDataParticle meshes data.
-
property
num_unknown_ints_1¶
-
property
unknown_byte_3¶
-
property
unknown_int_2¶
-
property
unknown_ints_1¶
-
property
unknown_node¶
-
property
-
class
NiMeshParticleSystem(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleSystemParticle system.
-
class
NiMorphController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpControllerUnknown! Used by Daoc->’healing.nif’.
-
class
NiMorphData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiMorphData,object
-
class
NiMorphMeshModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiMeshModifierPerforms linear-weighted blending between a set of target data streams.
-
property
elements¶
-
property
flags¶
-
property
num_elements¶
-
property
num_targets¶
-
property
-
class
NiMorphWeightsController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpController-
property
interpolators¶
-
property
num_interpolators¶
-
property
num_targets¶
-
property
target_names¶
-
property
unknown_2¶
-
property
-
class
NiMorpherController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpControllerUnknown! Used by Daoc.
-
property
data¶
-
property
-
class
NiMultiTargetTransformController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpControllerUnknown.
-
property
extra_targets¶
-
property
num_extra_targets¶
-
property
-
class
NiMultiTextureProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiProperty(note: not quite complete yet… but already reads most of the DAoC ones)
-
property
flags¶
-
property
texture_elements¶
-
property
unknown_int¶
-
property
-
class
NiNode(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiNode,object>>> from pyffi.formats.nif import NifFormat >>> x = NifFormat.NiNode() >>> y = NifFormat.NiNode() >>> z = NifFormat.NiNode() >>> x.num_children =1 >>> x.children.update_size() >>> y in x.children False >>> x.children[0] = y >>> y in x.children True >>> x.add_child(z, front = True) >>> x.add_child(y) >>> x.num_children 2 >>> x.children[0] is z True >>> x.remove_child(y) >>> y in x.children False >>> x.num_children 1 >>> e = NifFormat.NiSpotLight() >>> x.add_effect(e) >>> x.num_effects 1 >>> e in x.effects True
>>> from pyffi.formats.nif import NifFormat >>> node = NifFormat.NiNode() >>> child1 = NifFormat.NiNode() >>> child1.name = "hello" >>> child_2 = NifFormat.NiNode() >>> child_2.name = "world" >>> node.get_children() [] >>> node.set_children([child1, child_2]) >>> [child.name for child in node.get_children()] [b'hello', b'world'] >>> [child.name for child in node.children] [b'hello', b'world'] >>> node.set_children([]) >>> node.get_children() [] >>> # now set them the other way around >>> node.set_children([child_2, child1]) >>> [child.name for child in node.get_children()] [b'world', b'hello'] >>> [child.name for child in node.children] [b'world', b'hello'] >>> node.remove_child(child_2) >>> [child.name for child in node.children] [b'hello'] >>> node.add_child(child_2) >>> [child.name for child in node.children] [b'hello', b'world']
>>> from pyffi.formats.nif import NifFormat >>> node = NifFormat.NiNode() >>> effect1 = NifFormat.NiSpotLight() >>> effect1.name = "hello" >>> effect2 = NifFormat.NiSpotLight() >>> effect2.name = "world" >>> node.get_effects() [] >>> node.set_effects([effect1, effect2]) >>> [effect.name for effect in node.get_effects()] [b'hello', b'world'] >>> [effect.name for effect in node.effects] [b'hello', b'world'] >>> node.set_effects([]) >>> node.get_effects() [] >>> # now set them the other way around >>> node.set_effects([effect2, effect1]) >>> [effect.name for effect in node.get_effects()] [b'world', b'hello'] >>> [effect.name for effect in node.effects] [b'world', b'hello'] >>> node.remove_effect(effect2) >>> [effect.name for effect in node.effects] [b'hello'] >>> node.add_effect(effect2) >>> [effect.name for effect in node.effects] [b'hello', b'world']
-
add_child(child, front=False)[source]¶ Add block to child list.
- Parameters
child (L{NifFormat.NiAVObject}) – The child to add.
- Keyword Arguments
front – Whether to add to the front or to the end of the list (default is at end).
-
add_effect(effect)[source]¶ Add an effect to the list of effects.
- Parameters
effect (L{NifFormat.NiDynamicEffect}) – The effect to add.
-
get_children()[source]¶ Return a list of the children of the block.
- Returns
The list of children.
- Return type
listof L{NifFormat.NiAVObject}
-
get_effects()[source]¶ Return a list of the effects of the block.
- Returns
The list of effects.
- Return type
listof L{NifFormat.NiDynamicEffect}
-
get_skinned_geometries()[source]¶ This function yields all skinned geometries which have self as skeleton root.
-
merge_external_skeleton_root(skelroot)[source]¶ Attach skinned geometry to self (which will be the new skeleton root of the nif at the given skeleton root). Use this function if you move a skinned geometry from one nif into a new NIF file. The bone links will be updated to point to the tree at self, instead of to the external tree.
-
merge_skeleton_roots()[source]¶ This function will look for other geometries whose skeleton root is a (possibly indirect) child of this node. It will then reparent those geometries to this node. For example, it will unify the skeleton roots in Morrowind’s cliffracer.nif file, or of the (official) body skins. This makes it much easier to import skeletons in for instance Blender: there will be only one skeleton root for each bone, over all geometries.
The merge fails for those geometries whose global skin data transform does not match the inverse geometry transform relative to the skeleton root (the maths does not work out in this case!)
Returns list of all new blocks that have been reparented (and added to the skeleton root children list), and a list of blocks for which the merge failed.
-
remove_child(child)[source]¶ Remove a block from the child list.
- Parameters
child (L{NifFormat.NiAVObject}) – The child to remove.
-
remove_effect(effect)[source]¶ Remove a block from the effect list.
- Parameters
effect (L{NifFormat.NiDynamicEffect}) – The effect to remove.
-
send_bones_to_bind_position()[source]¶ This function will send all bones of geometries of this skeleton root to their bind position. For best results, call L{send_geometries_to_bind_position} first.
- Returns
A number quantifying the remaining difference between bind positions.
- Return type
float
-
send_detached_geometries_to_node_position()[source]¶ Some nifs (in particular in Morrowind) have geometries that are skinned but that do not share bones. In such cases, send_geometries_to_bind_position cannot reposition them. This function will send such geometries to the position of their root node.
Examples of such nifs are the official Morrowind skins (after merging skeleton roots).
Returns list of detached geometries that have been moved.
-
send_geometries_to_bind_position()[source]¶ Call this on the skeleton root of geometries. This function will transform the geometries, such that all skin data transforms coincide, or at least coincide partially.
- Returns
A number quantifying the remaining difference between bind positions.
- Return type
float
-
-
class
NiObject(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiObject,object-
apply_scale(scale)[source]¶ Scale data in this block. This implementation does nothing. Override this method if it contains geometry data that can be scaled.
-
find_chain(block, block_type=None)[source]¶ Finds a chain of blocks going from C{self} to C{block}. If found, self is the first element and block is the last element. If no branch found, returns an empty list. Does not check whether there is more than one branch; if so, the first one found is returned.
- Parameters
block – The block to find a chain to.
block_type – The type that blocks should have in this chain.
-
is_interchangeable(other)[source]¶ Are the two blocks interchangeable?
@todo: Rely on AnyType, SimpleType, ComplexType, etc. implementation.
-
tree(block_type=None, follow_all=True, unique=False)[source]¶ A generator for parsing all blocks in the tree (starting from and including C{self}).
- Parameters
block_type – If not
None, yield only blocks of the type C{block_type}.follow_all – If C{block_type} is not
None, then if this isTruethe function will parse the whole tree. Otherwise, the function will not follow branches that start by a non-C{block_type} block.unique – Whether the generator can return the same block twice or not.
-
-
class
NiObjectNET(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiObjectNET,object-
add_controller(ctrlblock)[source]¶ Add block to controller chain and set target of controller to self.
-
add_extra_data(extrablock)[source]¶ Add block to extra data list and extra data chain. It is good practice to ensure that the extra data has empty next_extra_data field when adding it to avoid loops in the hierarchy.
-
remove_extra_data(extrablock)[source]¶ Remove block from extra data list and extra data chain.
>>> from pyffi.formats.nif import NifFormat >>> block = NifFormat.NiNode() >>> block.num_extra_data_list = 3 >>> block.extra_data_list.update_size() >>> extrablock = NifFormat.NiStringExtraData() >>> block.extra_data_list[1] = extrablock >>> block.remove_extra_data(extrablock) >>> [extra for extra in block.extra_data_list] [None, None]
-
set_extra_datas(extralist)[source]¶ Set all extra data blocks from given list (erases existing data).
>>> from pyffi.formats.nif import NifFormat >>> node = NifFormat.NiNode() >>> extra1 = NifFormat.NiExtraData() >>> extra1.name = "hello" >>> extra2 = NifFormat.NiExtraData() >>> extra2.name = "world" >>> node.get_extra_datas() [] >>> node.set_extra_datas([extra1, extra2]) >>> [extra.name for extra in node.get_extra_datas()] [b'hello', b'world'] >>> [extra.name for extra in node.extra_data_list] [b'hello', b'world'] >>> node.extra_data is extra1 True >>> extra1.next_extra_data is extra2 True >>> extra2.next_extra_data is None True >>> node.set_extra_datas([]) >>> node.get_extra_datas() [] >>> # now set them the other way around >>> node.set_extra_datas([extra2, extra1]) >>> [extra.name for extra in node.get_extra_datas()] [b'world', b'hello'] >>> [extra.name for extra in node.extra_data_list] [b'world', b'hello'] >>> node.extra_data is extra2 True >>> extra2.next_extra_data is extra1 True >>> extra1.next_extra_data is None True
- Parameters
extralist (
listof L{NifFormat.NiExtraData}) – List of extra data blocks to add.
-
-
class
NiPSBombForce(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
name¶
-
property
unknown_1¶
-
property
unknown_10¶
-
property
unknown_2¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSBoundUpdater(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
unknown_1¶
-
property
unknown_2¶
-
property
-
class
NiPSBoxEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
name¶
-
property
unknown_1¶
-
property
unknown_10¶
-
property
unknown_11¶
-
property
unknown_12¶
-
property
unknown_13¶
-
property
unknown_14¶
-
property
unknown_15¶
-
property
unknown_16¶
-
property
unknown_17¶
-
property
unknown_18¶
-
property
unknown_19¶
-
property
unknown_2¶
-
property
unknown_20¶
-
property
unknown_21¶
-
property
unknown_22¶
-
property
unknown_23¶
-
property
unknown_24¶
-
property
unknown_25¶
-
property
unknown_26¶
-
property
unknown_27¶
-
property
unknown_28¶
-
property
unknown_29¶
-
property
unknown_3¶
-
property
unknown_30¶
-
property
unknown_31¶
-
property
unknown_32¶
-
property
unknown_33¶
-
property
unknown_34¶
-
property
unknown_35¶
-
property
unknown_36¶
-
property
unknown_37¶
-
property
unknown_38¶
-
property
unknown_39¶
-
property
unknown_4¶
-
property
unknown_40¶
-
property
unknown_41¶
-
property
unknown_42¶
-
property
unknown_43¶
-
property
unknown_44¶
-
property
unknown_45¶
-
property
unknown_46¶
-
property
unknown_47¶
-
property
unknown_48¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSCylinderEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSSphereEmitter-
property
unknown_23¶
-
property
-
class
NiPSDragForce(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
unknown_1¶
-
property
unknown_10¶
-
property
unknown_2¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSEmitParticlesCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysEmitterCtlr
-
class
NiPSEmitterDeclinationCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlr
-
class
NiPSEmitterDeclinationVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSEmitterDeclinationCtlr
-
class
NiPSEmitterLifeSpanCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlr
-
class
NiPSEmitterPlanarAngleCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlr
-
class
NiPSEmitterPlanarAngleVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSEmitterPlanarAngleCtlr
-
class
NiPSEmitterRadiusCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeController-
property
interpolator¶
-
property
unknown_2¶
-
property
-
class
NiPSEmitterRotAngleCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlr
-
class
NiPSEmitterRotAngleVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSEmitterRotAngleCtlr
-
class
NiPSEmitterRotSpeedCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlr
-
class
NiPSEmitterRotSpeedVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSEmitterRotSpeedCtlr
-
class
NiPSEmitterSpeedCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeController-
property
interpolator¶
-
property
unknown_3¶
-
property
-
class
NiPSFacingQuadGenerator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
unknown_1¶
-
property
unknown_10¶
-
property
unknown_11¶
-
property
unknown_12¶
-
property
unknown_2¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSForceActiveCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeController-
property
interpolator¶
-
property
unknown_2¶
-
property
-
class
NiPSGravityForce(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
unknown_1¶
-
property
unknown_10¶
-
property
unknown_11¶
-
property
unknown_12¶
-
property
unknown_13¶
-
property
unknown_14¶
-
property
unknown_15¶
-
property
unknown_16¶
-
property
unknown_17¶
-
property
unknown_18¶
-
property
unknown_19¶
-
property
unknown_2¶
-
property
unknown_20¶
-
property
unknown_21¶
-
property
unknown_22¶
-
property
unknown_23¶
-
property
unknown_24¶
-
property
unknown_25¶
-
property
unknown_26¶
-
property
unknown_27¶
-
property
unknown_28¶
-
property
unknown_29¶
-
property
unknown_3¶
-
property
unknown_30¶
-
property
unknown_31¶
-
property
unknown_32¶
-
property
unknown_33¶
-
property
unknown_34¶
-
property
unknown_35¶
-
property
unknown_36¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSGravityStrengthCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeController-
property
unknown_2¶
-
property
unknown_3¶
-
property
-
class
NiPSMeshEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
name¶
-
property
unknown_1¶
-
property
unknown_10¶
-
property
unknown_11¶
-
property
unknown_12¶
-
property
unknown_13¶
-
property
unknown_14¶
-
property
unknown_15¶
-
property
unknown_16¶
-
property
unknown_17¶
-
property
unknown_18¶
-
property
unknown_19¶
-
property
unknown_2¶
-
property
unknown_20¶
-
property
unknown_21¶
-
property
unknown_22¶
-
property
unknown_23¶
-
property
unknown_24¶
-
property
unknown_25¶
-
property
unknown_26¶
-
property
unknown_27¶
-
property
unknown_28¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSMeshParticleSystem(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSParticleSystem-
property
unknown_23¶
-
property
unknown_24¶
-
property
unknown_25¶
-
property
unknown_26¶
-
property
-
class
NiPSParticleSystem(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAVObject-
property
emitter¶
-
property
generator¶
-
property
simulator¶
-
property
unknown_10¶
-
property
unknown_11¶
-
property
unknown_12¶
-
property
unknown_15¶
-
property
unknown_16¶
-
property
unknown_17¶
-
property
unknown_19¶
-
property
unknown_20¶
-
property
unknown_21¶
-
property
unknown_22¶
-
property
unknown_27¶
-
property
unknown_28¶
-
property
unknown_29¶
-
property
unknown_3¶
-
property
unknown_30¶
-
property
unknown_31¶
-
property
unknown_32¶
-
property
unknown_33¶
-
property
unknown_34¶
-
property
unknown_35¶
-
property
unknown_36¶
-
property
unknown_37¶
-
property
unknown_38¶
-
property
unknown_39¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSPlanarCollider(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
name¶
-
property
unknown_byte_4¶
-
property
unknown_floats_5¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_link_6¶
-
property
unknown_short_3¶
-
property
-
class
NiPSResetOnLoopCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeController
-
class
NiPSSimulator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiMeshModifierThe mesh modifier that performs all particle system simulation.
-
property
num_simulation_steps¶
-
property
simulation_steps¶
-
property
-
class
NiPSSimulatorCollidersStep(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSSimulatorStepEncapsulates a floodgate kernel that simulates particle colliders.
-
property
colliders¶
-
property
num_colliders¶
-
property
-
class
NiPSSimulatorFinalStep(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSSimulatorStepEncapsulates a floodgate kernel that updates particle positions and ages. As indicated by its name, this step should be attached last in the NiPSSimulator mesh modifier.
-
class
NiPSSimulatorForcesStep(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSSimulatorStepEncapsulates a floodgate kernel that simulates particle forces.
-
property
forces¶
-
property
num_forces¶
-
property
-
class
NiPSSimulatorGeneralStep(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSSimulatorStepEncapsulates a floodgate kernel that updates particle size, colors, and rotations.
-
property
color_keys¶
-
property
color_loop_behavior¶
-
property
grow_generation¶
-
property
grow_time¶
-
property
num_color_keys¶
-
property
num_rotation_keys¶
-
property
num_size_keys¶
-
property
rotation_keys¶
-
property
rotation_loop_behavior¶
-
property
shrink_generation¶
-
property
shrink_time¶
-
property
size_keys¶
-
property
size_loop_behavior¶
-
property
unknown_1¶
-
property
unknown_2¶
-
property
unknown_3¶
-
property
-
class
NiPSSimulatorMeshAlignStep(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSSimulatorStepEncapsulates a floodgate kernel that updates mesh particle alignment and transforms.
-
property
num_rotation_keys¶
-
property
rotation_keys¶
-
property
rotation_loop_behavior¶
-
property
-
class
NiPSSimulatorStep(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectAbstract base class for a single step in the particle system simulation process. It has no seralized data.
-
class
NiPSSpawner(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject
-
class
NiPSSphereEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
name¶
-
property
unknown_10¶
-
property
unknown_11¶
-
property
unknown_12¶
-
property
unknown_13¶
-
property
unknown_14¶
-
property
unknown_15¶
-
property
unknown_16¶
-
property
unknown_17¶
-
property
unknown_18¶
-
property
unknown_19¶
-
property
unknown_2¶
-
property
unknown_20¶
-
property
unknown_21¶
-
property
unknown_22¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
unknown_8¶
-
property
unknown_9¶
-
property
-
class
NiPSSphericalCollider(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
unknown_1¶
-
property
unknown_2¶
-
property
unknown_3¶
-
property
unknown_4¶
-
property
unknown_5¶
-
property
unknown_6¶
-
property
unknown_7¶
-
property
-
class
NiPSysAgeDeathModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierUnknown particle modifier.
-
property
spawn_modifier¶
-
property
spawn_on_death¶
-
property
-
class
NiPSysAirFieldAirFrictionCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for air field air friction.
-
class
NiPSysAirFieldInheritVelocityCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for air field inherit velocity.
-
class
NiPSysAirFieldModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysFieldModifierParticle system modifier, used for controlling the particle velocity in a field like wind.
-
property
direction¶
-
property
unknown_boolean_1¶
-
property
unknown_boolean_2¶
-
property
unknown_boolean_3¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
-
class
NiPSysAirFieldSpreadCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for air field spread.
-
class
NiPSysBombModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierParticle modifier that uses a NiNode to use as a “Bomb Object” to alter the path of particles.
-
property
bomb_axis¶
-
property
bomb_object¶
-
property
decay¶
-
property
decay_type¶
-
property
delta_v¶
-
property
symmetry_type¶
-
property
-
class
NiPSysBoundUpdateModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierUnknown particle system modifier.
-
property
update_skip¶
-
property
-
class
NiPSysBoxEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysVolumeEmitterParticle emitter that uses points within a defined Box shape to emit from..
-
property
depth¶
-
property
height¶
-
property
width¶
-
property
-
class
NiPSysCollider(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectParticle system collider.
-
property
bounce¶
-
property
collider_object¶
-
property
die_on_collide¶
-
property
next_collider¶
-
property
parent¶
-
property
spawn_modifier¶
-
property
spawn_on_collide¶
-
property
-
class
NiPSysColliderManager(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierParticle modifier that adds a defined shape to act as a collision object for particles to interact with.
-
property
collider¶
-
property
-
class
NiPSysColorModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierParticle modifier that adds keyframe data to modify color/alpha values of particles over time.
-
property
data¶
-
property
-
class
NiPSysCylinderEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysVolumeEmitterParticle emitter that uses points within a defined Cylinder shape to emit from.
-
property
height¶
-
property
radius¶
-
property
-
class
NiPSysData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiRotatingParticlesDataParticle system data.
-
property
aspect_ratio¶
-
property
has_subtexture_offset_u_vs¶
-
property
has_unknown_floats_3¶
-
property
num_subtexture_offset_u_vs¶
-
property
particle_descriptions¶
-
property
subtexture_offset_u_vs¶
-
property
unknown_byte_4¶
-
property
unknown_floats_3¶
-
property
unknown_int_4¶
-
property
unknown_int_5¶
-
property
unknown_int_6¶
-
property
unknown_short_1¶
-
property
unknown_short_2¶
-
property
unknown_short_3¶
-
property
-
class
NiPSysDragFieldModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysFieldModifierParticle system modifier, used for controlling the particle velocity in drag space warp.
-
property
direction¶
-
property
use_direction¶
-
property
-
class
NiPSysDragModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierUnknown.
-
property
drag_axis¶
-
property
parent¶
-
property
percentage¶
-
property
range¶
-
property
range_falloff¶
-
property
-
class
NiPSysEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierA particle emitter?
-
property
declination¶
-
property
declination_variation¶
-
property
initial_color¶
-
property
initial_radius¶
-
property
life_span¶
-
property
life_span_variation¶
-
property
planar_angle¶
-
property
planar_angle_variation¶
-
property
radius_variation¶
-
property
speed¶
-
property
speed_variation¶
-
property
-
class
NiPSysEmitterCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlrParticle system emitter controller.
-
property
data¶
-
property
visibility_interpolator¶
-
property
-
class
NiPSysEmitterCtlrData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectParticle system emitter controller data.
-
property
float_keys¶
-
property
num_visibility_keys¶
-
property
visibility_keys¶
-
property
-
class
NiPSysEmitterDeclinationCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrUnknown.
-
class
NiPSysEmitterDeclinationVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrUnknown.
-
class
NiPSysEmitterInitialRadiusCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrUnknown.
-
class
NiPSysEmitterLifeSpanCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrUnknown.
-
class
NiPSysEmitterPlanarAngleCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for emitter planar angle.
-
class
NiPSysEmitterPlanarAngleVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for emitter planar angle variation.
-
class
NiPSysEmitterSpeedCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrUnknown.
-
class
NiPSysFieldAttenuationCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for force field attenuation.
-
class
NiPSysFieldMagnitudeCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for force field magnitude.
-
class
NiPSysFieldMaxDistanceCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for force field maximum distance.
-
class
NiPSysFieldModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierBase for all force field particle modifiers.
-
property
attenuation¶
-
property
field_object¶
-
property
magnitude¶
-
property
max_distance¶
-
property
use_max_distance¶
-
property
-
class
NiPSysGravityFieldModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysFieldModifierParticle system modifier, used for controlling the particle velocity in gravity field.
-
property
direction¶
-
property
-
class
NiPSysGravityModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierAdds gravity to a particle system, when linked to a NiNode to use as a Gravity Object.
-
property
decay¶
-
property
force_type¶
-
property
gravity_axis¶
-
property
gravity_object¶
-
property
strength¶
-
property
turbulence¶
-
property
turbulence_scale¶
-
property
unknown_byte¶
-
property
-
class
NiPSysGravityStrengthCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrUnknown.
-
class
NiPSysGrowFadeModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierParticle modifier that controls the time it takes to grow a particle from Size=0 to the specified Size in the emitter, and then back to 0. This modifer has no control over alpha settings.
-
property
base_scale¶
-
property
fade_generation¶
-
property
fade_time¶
-
property
grow_generation¶
-
property
grow_time¶
-
property
-
class
NiPSysInitialRotAngleCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for emitter initial rotation angle.
-
class
NiPSysInitialRotAngleVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for emitter initial rotation angle variation.
-
class
NiPSysInitialRotSpeedCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for emitter initial rotation speed.
-
class
NiPSysInitialRotSpeedVarCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierFloatCtlrParticle system controller for emitter initial rotation speed variation.
-
class
NiPSysMeshEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysEmitterParticle emitter that uses points on a specified mesh to emit from.
-
property
emission_axis¶
-
property
emission_type¶
-
property
emitter_meshes¶
-
property
initial_velocity_type¶
-
property
num_emitter_meshes¶
-
property
-
class
NiPSysMeshUpdateModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierUnknown.
-
property
meshes¶
-
property
num_meshes¶
-
property
-
class
NiPSysModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectGeneric particle system modifier object.
-
property
active¶
-
property
name¶
-
property
order¶
-
property
target¶
-
property
-
class
NiPSysModifierActiveCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierBoolCtlrUnknown.
-
property
data¶
-
property
-
class
NiPSysModifierBoolCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlrA particle system modifier controller that deals with boolean data?
-
class
NiPSysModifierCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSingleInterpControllerA particle system modifier controller.
-
property
modifier_name¶
-
property
-
class
NiPSysModifierFloatCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierCtlrA particle system modifier controller that deals with floating point data?
-
property
data¶
-
property
-
class
NiPSysPlanarCollider(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysColliderParticle Collider object which particles will interact with.
-
property
height¶
-
property
width¶
-
property
x_axis¶
-
property
y_axis¶
-
property
-
class
NiPSysPositionModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierUnknown particle system modifier.
-
class
NiPSysRadialFieldModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysFieldModifierParticle system modifier, used for controlling the particle velocity in force field.
-
property
radial_type¶
-
property
-
class
NiPSysResetOnLoopCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerUnknown.
-
class
NiPSysRotationModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierParticle modifier that adds rotations to particles.
-
property
initial_axis¶
-
property
initial_rotation_angle¶
-
property
initial_rotation_angle_variation¶
-
property
initial_rotation_speed¶
-
property
initial_rotation_speed_variation¶
-
property
random_initial_axis¶
-
property
random_rot_speed_sign¶
-
property
-
class
NiPSysSpawnModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysModifierUnknown particle modifier.
-
property
life_span¶
-
property
life_span_variation¶
-
property
max_num_to_spawn¶
-
property
min_num_to_spawn¶
-
property
num_spawn_generations¶
-
property
percentage_spawned¶
-
property
spawn_dir_chaos¶
-
property
spawn_speed_chaos¶
-
property
unknown_int¶
-
property
-
class
NiPSysSphereEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysVolumeEmitterParticle emitter that uses points within a sphere shape to emit from.
-
property
radius¶
-
property
-
class
NiPSysSphericalCollider(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysColliderParticle Collider object which particles will interact with.
-
property
radius¶
-
property
-
class
NiPSysTrailEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysEmitterGuild 2-Specific node
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
unknown_float_5¶
-
property
unknown_float_6¶
-
property
unknown_float_7¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
unknown_int_4¶
-
property
-
class
NiPSysTurbulenceFieldModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysFieldModifierParticle system modifier, used for controlling the particle velocity in drag space warp.
-
property
frequency¶
-
property
-
class
NiPSysUpdateCtlr(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerParticle system controller, used for ???.
-
class
NiPSysVolumeEmitter(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysEmitterAn emitter that emits meshes?
-
property
emitter_object¶
-
property
-
class
NiPSysVortexFieldModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPSysFieldModifierParticle system modifier, used for controlling the particle velocity in force field.
-
property
direction¶
-
property
-
class
NiPalette(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectA color palette.
-
property
num_entries¶
-
property
palette¶
-
property
unknown_byte¶
-
property
-
class
NiParticleBomb(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierA particle modifier.
-
property
decay¶
-
property
decay_type¶
-
property
delta_v¶
-
property
direction¶
-
property
duration¶
-
property
position¶
-
property
start¶
-
property
symmetry_type¶
-
property
-
class
NiParticleColorModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierUnknown.
-
property
color_data¶
-
property
-
class
NiParticleGrowFade(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierThis particle system modifier controls the particle size. If it is present the particles start with size 0.0 . Then they grow to their original size and stay there until they fade to zero size again at the end of their lifetime cycle.
-
property
fade¶
-
property
grow¶
-
property
-
class
NiParticleMeshModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierUnknown.
-
property
num_particle_meshes¶
-
property
particle_meshes¶
-
property
-
class
NiParticleMeshes(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticlesMesh particle node?
-
class
NiParticleMeshesData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiRotatingParticlesDataParticle meshes data.
-
property
unknown_link_2¶
-
property
-
class
NiParticleModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectA particle system modifier.
-
property
controller¶
-
property
next_modifier¶
-
property
-
class
NiParticleRotation(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierUnknown.
-
property
initial_axis¶
-
property
random_initial_axis¶
-
property
rotation_speed¶
-
property
-
class
NiParticleSystem(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticlesA particle system.
-
property
modifiers¶
-
property
num_modifiers¶
-
property
unknown_int_1¶
-
property
unknown_short_2¶
-
property
unknown_short_3¶
-
property
world_space¶
-
property
-
class
NiParticleSystemController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerA generic particle system time controller object.
-
property
color_data¶
-
property
emit_flags¶
-
property
emit_rate¶
-
property
emit_start_time¶
-
property
emit_stop_time¶
-
property
emitter¶
-
property
horizontal_angle¶
-
property
horizontal_direction¶
-
property
lifetime¶
-
property
lifetime_random¶
-
property
num_particles¶
-
property
num_valid¶
-
property
old_emit_rate¶
-
property
old_speed¶
-
property
particle_extra¶
-
property
particle_lifetime¶
-
property
particle_link¶
-
property
particle_timestamp¶
-
property
particle_unknown_short¶
-
property
particle_unknown_vector¶
-
property
particle_velocity¶
-
property
particle_vertex_id¶
-
property
particles¶
-
property
size¶
-
property
speed¶
-
property
speed_random¶
-
property
start_random¶
-
property
trailer¶
-
property
unknown_byte¶
-
property
unknown_color¶
-
property
unknown_float_1¶
-
property
unknown_float_13¶
-
property
unknown_floats_2¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_link¶
-
property
unknown_link_2¶
-
property
unknown_normal¶
-
property
unknown_short_2¶
-
property
unknown_short_3¶
-
property
vertical_angle¶
-
property
vertical_direction¶
-
property
-
class
NiParticles(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiGeometryGeneric particle system node.
-
class
NiParticlesData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiGeometryDataGeneric rotating particles data object.
-
property
has_radii¶
-
property
has_rotation_angles¶
-
property
has_rotation_axes¶
-
property
has_rotations¶
-
property
has_sizes¶
-
property
has_uv_quadrants¶
-
property
num_active¶
-
property
num_particles¶
-
property
num_uv_quadrants¶
-
property
particle_radius¶
-
property
radii¶
-
property
rotation_angles¶
-
property
rotation_axes¶
-
property
rotations¶
-
property
sizes¶
-
property
unknown_byte_1¶
-
property
unknown_byte_2¶
-
property
unknown_link¶
-
property
uv_quadrants¶
-
property
-
class
NiPathController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerTime controller for a path.
-
property
float_data¶
-
property
pos_data¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_int_1¶
-
property
unknown_short¶
-
property
unknown_short_2¶
-
property
-
class
NiPathInterpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiKeyBasedInterpolatorUnknown interpolator.
-
property
float_data¶
-
property
pos_data¶
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_int¶
-
property
unknown_short¶
-
property
unknown_short_2¶
-
property
-
class
NiPersistentSrcTextureRendererData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.ATextureRenderData-
property
num_faces¶
-
property
num_pixels¶
-
property
pixel_data¶
-
property
unknown_int_6¶
-
property
unknown_int_7¶
-
property
-
class
NiPhysXActorDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
shape_description¶
-
property
unknown_byte_1¶
-
property
unknown_byte_2¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_4¶
-
property
unknown_int_5¶
-
property
unknown_int_6¶
-
property
unknown_quat_1¶
-
property
unknown_quat_2¶
-
property
unknown_quat_3¶
-
property
unknown_ref_0¶
-
property
unknown_ref_1¶
-
property
unknown_ref_2¶
-
property
unknown_refs_3¶
-
property
-
class
NiPhysXBodyDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
unknown_bytes¶
-
property
-
class
NiPhysXD6JointDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
unknown_bytes¶
-
property
-
class
NiPhysXKinematicSrc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
unknown_bytes¶
-
property
-
class
NiPhysXMaterialDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown node.
-
property
unknown_byte_1¶
-
property
unknown_byte_2¶
-
property
unknown_int¶
-
property
-
class
NiPhysXMeshDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
num_vertices¶
-
property
unknown_byte_1¶
-
property
unknown_byte_2¶
-
property
unknown_bytes_0¶
-
property
unknown_bytes_1¶
-
property
unknown_bytes_2¶
-
property
unknown_bytes_3¶
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_4¶
-
property
unknown_ints_1¶
-
property
unknown_short_1¶
-
property
unknown_short_2¶
-
property
unknown_shorts_1¶
-
property
vertices¶
-
property
-
class
NiPhysXProp(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectNETUnknown PhysX node.
-
property
num_dests¶
-
property
prop_description¶
-
property
transform_dests¶
-
property
unknown_byte¶
-
property
unknown_float_1¶
-
property
unknown_int¶
-
property
unknown_int_1¶
-
property
unknown_refs_1¶
-
property
-
class
NiPhysXPropDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
actor_descs¶
-
property
joint_descs¶
-
property
material_descs¶
-
property
num_dests¶
-
property
num_joints¶
-
property
num_materials¶
-
property
unknown_byte_6¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
unknown_int_5¶
-
property
unknown_string_4¶
-
property
-
class
NiPhysXShapeDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
mesh_description¶
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
unknown_int_4¶
-
property
unknown_int_5¶
-
property
unknown_int_7¶
-
property
unknown_int_8¶
-
property
unknown_quat_1¶
-
property
unknown_quat_2¶
-
property
unknown_quat_3¶
-
property
unknown_short_1¶
-
property
unknown_short_2¶
-
property
-
class
NiPhysXTransformDest(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectUnknown PhysX node.
-
property
node¶
-
property
unknown_byte_1¶
-
property
unknown_byte_2¶
-
property
-
class
NiPixelData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.ATextureRenderDataA texture.
-
property
num_faces¶
-
property
num_pixels¶
-
property
pixel_data¶
-
property
-
class
NiPlanarCollider(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierUnknown.
-
property
unknown_float_1¶
-
property
unknown_float_10¶
-
property
unknown_float_11¶
-
property
unknown_float_12¶
-
property
unknown_float_13¶
-
property
unknown_float_14¶
-
property
unknown_float_15¶
-
property
unknown_float_16¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
unknown_float_5¶
-
property
unknown_float_6¶
-
property
unknown_float_7¶
-
property
unknown_float_8¶
-
property
unknown_float_9¶
-
property
unknown_short¶
-
property
unknown_short_2¶
-
property
-
class
NiPoint3InterpController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSingleInterpControllerA controller that interpolates point 3 data?
-
property
data¶
-
property
target_color¶
-
property
-
class
NiPoint3Interpolator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiKeyBasedInterpolatorUnknown.
-
property
data¶
-
property
point_3_value¶
-
property
-
class
NiPointLight(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiLightA point light.
-
property
constant_attenuation¶
-
property
linear_attenuation¶
-
property
quadratic_attenuation¶
-
property
-
class
NiPortal(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAVObjectA Portal
-
property
num_vertices¶
-
property
target¶
-
property
unknown_flags¶
-
property
unknown_short_2¶
-
property
vertices¶
-
property
-
class
NiPosData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectPosition data.
-
property
data¶
-
property
-
class
NiProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectNETA generic property object.
-
class
NiRangeLODData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiLODDataDescribes levels of detail based on distance of object from camera.
-
property
lod_center¶
-
property
lod_levels¶
-
property
num_lod_levels¶
-
property
-
class
NiRawImageData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectRaw image data.
-
property
height¶
-
property
image_type¶
-
property
rgb_image_data¶
-
property
rgba_image_data¶
-
property
width¶
-
property
-
class
NiRenderObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiAVObjectAn object that can be rendered.
-
property
active_material¶
-
property
material_data¶
-
property
material_needs_update_default¶
-
property
num_materials¶
-
property
-
class
NiRollController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSingleInterpControllerUnknown.
-
property
data¶
-
property
-
class
NiRoom(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeGrouping node for nodes in a Portal
-
property
in_portals¶
-
property
items¶
-
property
num_in_portals¶
-
property
num_items¶
-
property
num_portals_2¶
-
property
num_walls¶
-
property
portals_2¶
-
property
wall_plane¶
-
property
-
class
NiRoomGroup(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeGrouping node for nodes in a Portal
-
property
num_rooms¶
-
property
rooms¶
-
property
shell_link¶
-
property
-
class
NiRotatingParticles(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticlesUnknown.
-
class
NiRotatingParticlesData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticlesDataRotating particles data object.
-
property
has_rotations_2¶
-
property
rotations_2¶
-
property
-
class
NiScreenElements(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriShapeTwo dimensional screen elements.
-
class
NiScreenElementsData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriShapeDataTwo dimensional screen elements.
-
property
max_polygons¶
-
property
num_polygons¶
-
property
polygon_indices¶
-
property
polygons¶
-
property
unknown_u_short_1¶
-
property
unknown_u_short_2¶
-
property
unknown_u_short_3¶
-
property
used_triangle_points¶
-
property
used_vertices¶
-
property
-
class
NiScreenLODData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiLODDataDescribes levels of detail based on size of object on screen?
-
property
bound_center¶
-
property
bound_radius¶
-
property
proportion_count¶
-
property
proportion_levels¶
-
property
world_center¶
-
property
world_radius¶
-
property
-
class
NiSequence(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectRoot node used in some Empire Earth II .kf files (version 4.2.2.0).
-
property
controlled_blocks¶
-
property
name¶
-
property
num_controlled_blocks¶
-
property
text_keys¶
-
property
text_keys_name¶
-
property
unknown_int_1¶
-
property
unknown_int_4¶
-
property
unknown_int_5¶
-
property
-
class
NiSequenceData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject
-
class
NiSequenceStreamHelper(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectNETKeyframe animation root node, in .kf files.
-
class
NiShadeProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyDetermines whether flat shading or smooth shading is used on a shape.
-
property
flags¶
-
property
-
class
NiShadowGenerator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject-
property
name¶
-
property
num_unknown_links_1¶
-
property
target¶
-
property
unknown_flags¶
-
property
unknown_links_1¶
-
property
unkown_byte_5¶
-
property
unkown_byte_9¶
-
property
unkown_float_4¶
-
property
unkown_int_2¶
-
property
unkown_int_6¶
-
property
unkown_int_7¶
-
property
unkown_int_8¶
-
property
-
class
NiSingleInterpController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiInterpControllerA controller referring to a single interpolator.
-
property
interpolator¶
-
property
-
class
NiSkinData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiSkinData,object-
apply_scale(scale)[source]¶ Apply scale factor on data.
>>> from pyffi.formats.nif import NifFormat >>> id44 = NifFormat.Matrix44() >>> id44.set_identity() >>> skelroot = NifFormat.NiNode() >>> skelroot.name = 'Scene Root' >>> skelroot.set_transform(id44) >>> bone1 = NifFormat.NiNode() >>> bone1.name = 'bone1' >>> bone1.set_transform(id44) >>> bone1.translation.x = 10 >>> skelroot.add_child(bone1) >>> geom = NifFormat.NiTriShape() >>> geom.set_transform(id44) >>> skelroot.add_child(geom) >>> skininst = NifFormat.NiSkinInstance() >>> geom.skin_instance = skininst >>> skininst.skeleton_root = skelroot >>> skindata = NifFormat.NiSkinData() >>> skininst.data = skindata >>> skindata.set_transform(id44) >>> geom.add_bone(bone1, {}) >>> geom.update_bind_position() >>> bone1.translation.x 10.0 >>> skindata.bone_list[0].skin_transform.translation.x -10.0 >>> import pyffi.spells.nif.fix >>> import pyffi.spells.nif >>> data = NifFormat.Data() >>> data.roots = [skelroot] >>> toaster = pyffi.spells.nif.NifToaster() >>> toaster.scale = 0.1 >>> pyffi.spells.nif.fix.SpellScale(data=data, toaster=toaster).recurse() pyffi.toaster:INFO:--- fix_scale --- pyffi.toaster:INFO: scaling by factor 0.100000 pyffi.toaster:INFO: ~~~ NiNode [Scene Root] ~~~ pyffi.toaster:INFO: ~~~ NiNode [bone1] ~~~ pyffi.toaster:INFO: ~~~ NiTriShape [] ~~~ pyffi.toaster:INFO: ~~~ NiSkinInstance [] ~~~ pyffi.toaster:INFO: ~~~ NiSkinData [] ~~~ >>> bone1.translation.x 1.0 >>> skindata.bone_list[0].skin_transform.translation.x -1.0
-
-
class
NiSkinInstance(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectSkinning instance.
-
property
bones¶
-
property
data¶
-
property
num_bones¶
-
property
skeleton_root¶
-
property
skin_partition¶
-
property
-
class
NiSkinPartition(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectSkinning data, optimized for hardware skinning. The mesh is partitioned in submeshes such that each vertex of a submesh is influenced only by a limited and fixed number of bones.
-
property
num_skin_partition_blocks¶
-
property
skin_partition_blocks¶
-
property
-
class
NiSkinningLODController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeController
-
class
NiSkinningMeshModifier(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiMeshModifier-
property
bone_bounds¶
-
property
bone_transforms¶
-
property
bones¶
-
property
flags¶
-
property
num_bones¶
-
property
skeleton_root¶
-
property
skeleton_transform¶
-
property
-
class
NiSortAdjustNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeUnknown node. Found in Loki.
-
property
sorting_mode¶
-
property
unknown_int_2¶
-
property
-
class
NiSourceCubeMap(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiSourceTextureUnknown node. Found in Emerge Demo.
-
class
NiSourceTexture(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTextureDescribes texture source and properties.
-
property
alpha_format¶
-
property
direct_render¶
-
property
file_name¶
-
property
is_static¶
-
property
persist_render_data¶
-
property
pixel_data¶
-
property
pixel_layout¶
-
property
unknown_byte¶
-
property
unknown_link¶
-
property
use_external¶
-
property
use_mipmaps¶
-
property
-
class
NiSpecularProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyGives specularity to a shape. Flags 0x0001.
-
property
flags¶
-
property
-
class
NiSphericalCollider(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiParticleModifierUnknown.
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
unknown_float_5¶
-
property
unknown_short_1¶
-
property
unknown_short_2¶
-
property
-
class
NiSpotLight(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPointLightA spot.
-
property
cutoff_angle¶
-
property
exponent¶
-
property
unknown_float¶
-
property
-
class
NiStencilProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyAllows control of stencil testing.
-
property
draw_mode¶
-
property
fail_action¶
-
property
flags¶
-
property
pass_action¶
-
property
stencil_enabled¶
-
property
stencil_function¶
-
property
stencil_mask¶
-
property
stencil_ref¶
-
property
z_fail_action¶
-
property
-
class
NiStringExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataApparently commands for an optimizer instructing it to keep things it would normally discard. Also refers to NiNode objects (through their name) in animation .kf files.
-
property
bytes_remaining¶
-
property
string_data¶
-
property
-
class
NiStringPalette(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectList of 0x00-seperated strings, which are names of controlled objects and controller types. Used in .kf files in conjunction with NiControllerSequence.
-
property
palette¶
-
property
-
class
NiStringsExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataList of strings; for example, a list of all bone names.
-
property
data¶
-
property
num_strings¶
-
property
-
class
NiSwitchNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeA node used to switch between branches, such as for LOD levels?
-
property
unknown_flags_1¶
-
property
unknown_int_1¶
-
property
-
class
NiTextKeyExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataExtra data, used to name different animation sequences.
-
property
num_text_keys¶
-
property
text_keys¶
-
property
unknown_int_1¶
-
property
-
class
NiTexture(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectNETA texture.
-
class
NiTextureEffect(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiDynamicEffectEnables environment mapping. Should be in both the children list and effects list of the NiTriShape object. For Morrowind: the bump map can be used to bump the environment map (note that the bump map is ignored if no NiTextureEffect object is present).
-
property
clipping_plane¶
-
property
coordinate_generation_type¶
-
property
image¶
-
property
model_projection_matrix¶
-
property
model_projection_transform¶
-
property
ps_2_k¶
-
property
ps_2_l¶
-
property
source_texture¶
-
property
texture_clamping¶
-
property
texture_filtering¶
-
property
texture_type¶
-
property
unknown¶
-
property
unknown_float¶
-
property
unknown_short¶
-
property
unknown_vector¶
-
property
-
class
NiTextureModeProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyUnknown
-
property
ps_2_k¶
-
property
ps_2_l¶
-
property
unknown_ints¶
-
property
unknown_short¶
-
property
-
class
NiTextureProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiProperty-
property
flags¶
-
property
image¶
-
property
unknown_ints_1¶
-
property
unknown_ints_2¶
-
property
-
class
NiTextureTransformController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiFloatInterpControllerTexture transformation controller. The target texture slot should have “Has Texture Transform” enabled.
-
property
data¶
-
property
operation¶
-
property
texture_slot¶
-
property
unknown_2¶
-
property
-
class
NiTexturingProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyDescribes an object’s textures.
-
property
apply_mode¶
-
property
base_texture¶
-
property
bump_map_luma_offset¶
-
property
bump_map_luma_scale¶
-
property
bump_map_matrix¶
-
property
bump_map_texture¶
-
property
dark_texture¶
-
property
decal_0_texture¶
-
property
decal_1_texture¶
-
property
decal_2_texture¶
-
property
decal_3_texture¶
-
property
detail_texture¶
-
property
flags¶
-
property
gloss_texture¶
-
property
glow_texture¶
-
property
has_base_texture¶
-
property
has_bump_map_texture¶
-
property
has_dark_texture¶
-
property
has_decal_0_texture¶
-
property
has_decal_1_texture¶
-
property
has_decal_2_texture¶
-
property
has_decal_3_texture¶
-
property
has_detail_texture¶
-
property
has_gloss_texture¶
-
property
has_glow_texture¶
-
property
has_normal_texture¶
-
property
has_unknown_2_texture¶
-
property
normal_texture¶
-
property
num_shader_textures¶
-
property
shader_textures¶
-
property
texture_count¶
-
property
unknown_2_float¶
-
property
unknown_2_texture¶
-
property
-
class
NiTimeController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectA generic time controller object.
-
property
flags¶
-
property
frequency¶
-
property
next_controller¶
-
property
phase¶
-
property
start_time¶
-
property
stop_time¶
-
property
target¶
-
property
unknown_integer¶
-
property
-
class
NiTransformController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiKeyframeControllerNiTransformController replaces the NiKeyframeController.
-
class
NiTransformData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiKeyframeDataMesh animation keyframe data.
-
class
NiTransformEvaluator(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObject
-
class
NiTransformInterpolator(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiTransformInterpolator,object
-
class
NiTransparentProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyUnknown
-
property
unknown¶
-
property
-
class
NiTriBasedGeom(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiTriBasedGeom,object-
get_interchangeable_tri_shape(triangles=None)[source]¶ Returns a NiTriShape block that is geometrically interchangeable. If you do not want to set the triangles from the original shape, use the triangles argument.
-
get_interchangeable_tri_strips(strips=None)[source]¶ Returns a NiTriStrips block that is geometrically interchangeable. If you do not want to set the strips from the original shape, use the strips argument.
-
get_tangent_space()[source]¶ Return iterator over normal, tangent, bitangent vectors. If the block has no tangent space, then returns None.
-
update_skin_partition(maxbonesperpartition=4, maxbonespervertex=4, verbose=0, stripify=True, stitchstrips=False, padbones=False, triangles=None, trianglepartmap=None, maximize_bone_sharing=False)[source]¶ Recalculate skin partition data.
- Deprecated
Do not use the verbose argument.
- Parameters
maxbonesperpartition – Maximum number of bones in each partition. The num_bones field will not exceed this number.
maxbonespervertex – Maximum number of bones per vertex. The num_weights_per_vertex field will be exactly equal to this number.
verbose – Ignored, and deprecated. Set pyffi’s log level instead.
stripify – If true, stripify the partitions, otherwise use triangles.
stitchstrips – If stripify is true, then set this to true to stitch the strips.
padbones – Enforces the numbones field to be equal to maxbonesperpartition. Also ensures that the bone indices are unique and sorted, per vertex. Raises an exception if maxbonespervertex is not equal to maxbonesperpartition (in that case bone indices cannot be unique and sorted). This options is required for Freedom Force vs. the 3rd Reich skin partitions.
triangles – The triangles of the partition (if not specified, then this defaults to C{self.data.get_triangles()}.
trianglepartmap – Maps each triangle to a partition index. Faces with different indices will never appear in the same partition. If the skin instance is a BSDismemberSkinInstance, then these indices are used as body part types, and the partitions in the BSDismemberSkinInstance are updated accordingly. Note that the faces are counted relative to L{triangles}.
maximize_bone_sharing – Maximize bone sharing between partitions. This option is useful for Fallout 3.
-
update_tangent_space(as_extra=None, vertexprecision=3, normalprecision=3)[source]¶ Recalculate tangent space data.
- Parameters
as_extra – Whether to store the tangent space data as extra data (as in Oblivion) or not (as in Fallout 3). If not set, switches to Oblivion if an extra data block is found, otherwise does default. Set it to override this detection (for example when using this function to create tangent space data) and force behaviour.
-
-
class
NiTriBasedGeomData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiTriBasedGeomData,object-
get_triangle_indices(triangles)[source]¶ Yield list of triangle indices (relative to self.get_triangles()) of given triangles. Degenerate triangles in the list are assigned index
None.>>> from pyffi.formats.nif import NifFormat >>> geomdata = NifFormat.NiTriShapeData() >>> geomdata.set_triangles([(0,1,2),(1,2,3),(2,3,4)]) >>> list(geomdata.get_triangle_indices([(1,2,3)])) [1] >>> list(geomdata.get_triangle_indices([(3,1,2)])) [1] >>> list(geomdata.get_triangle_indices([(2,3,1)])) [1] >>> list(geomdata.get_triangle_indices([(1,2,0),(4,2,3)])) [0, 2] >>> list(geomdata.get_triangle_indices([(0,0,0),(4,2,3)])) [None, 2] >>> list(geomdata.get_triangle_indices([(0,3,4),(4,2,3)])) Traceback (most recent call last): ... ValueError: ...
- Parameters
triangles (iterator or list of tuples of three ints) – An iterable of triangles to check.
-
is_interchangeable(other)[source]¶ Heuristically checks if two NiTriBasedGeomData blocks describe the same geometry, that is, if they can be used interchangeably in a NIF file without affecting the rendering. The check is not fool proof but has shown to work in most practical cases.
- Parameters
other (L{NifFormat.NiTriBasedGeomData} (if it has another type then the function will always return
False)) – Another geometry data block.- Returns
Trueif the geometries are equivalent,Falseotherwise.
-
-
class
NiTriShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriBasedGeomA shape node that refers to singular triangle data.
-
class
NiTriShapeData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiTriShapeData,objectExample usage:
>>> from pyffi.formats.nif import NifFormat >>> block = NifFormat.NiTriShapeData() >>> block.set_triangles([(0,1,2),(2,1,3),(2,3,4)]) >>> block.get_strips() [[0, 1, 2, 3, 4]] >>> block.get_triangles() [(0, 1, 2), (2, 1, 3), (2, 3, 4)] >>> block.set_strips([[1,0,1,2,3,4]]) >>> block.get_strips() # stripifier keeps geometry but nothing else [[0, 2, 1, 3], [2, 4, 3]] >>> block.get_triangles() [(0, 2, 1), (1, 2, 3), (2, 4, 3)]
-
class
NiTriShapeSkinController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerOld version of skinning instance.
-
property
bone_data¶
-
property
bones¶
-
property
num_bones¶
-
property
vertex_counts¶
-
property
-
class
NiTriStrips(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTriBasedGeomA shape node that refers to data organized into strips of triangles
-
class
NiTriStripsData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._NiTriStripsData,objectExample usage:
>>> from pyffi.formats.nif import NifFormat >>> block = NifFormat.NiTriStripsData() >>> block.set_triangles([(0,1,2),(2,1,3),(2,3,4)]) >>> block.get_strips() [[0, 1, 2, 3, 4]] >>> block.get_triangles() [(0, 1, 2), (1, 3, 2), (2, 3, 4)] >>> block.set_strips([[1,0,1,2,3,4]]) >>> block.get_strips() [[1, 0, 1, 2, 3, 4]] >>> block.get_triangles() [(0, 2, 1), (1, 2, 3), (2, 4, 3)]
-
class
NiUVController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerTime controller for texture coordinates.
-
property
data¶
-
property
unknown_short¶
-
property
-
class
NiUVData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectTexture coordinate data.
-
property
uv_groups¶
-
property
-
class
NiVectorExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataExtra vector data.
-
property
unknown_float¶
-
property
vector_data¶
-
property
-
class
NiVertWeightsExtraData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiExtraDataNot used in skinning. Unsure of use - perhaps for morphing animation or gravity.
-
property
num_bytes¶
-
property
num_vertices¶
-
property
weight¶
-
property
-
class
NiVertexColorProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyProperty of vertex colors. This object is referred to by the root object of the NIF file whenever some NiTriShapeData object has vertex colors with non-default settings; if not present, vertex colors have vertex_mode=2 and lighting_mode=1.
-
property
flags¶
-
property
lighting_mode¶
-
property
vertex_mode¶
-
property
-
class
NiVisController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiBoolInterpControllerTime controller for visibility.
-
property
data¶
-
property
-
class
NiVisData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectVisibility data for a controller.
-
property
keys¶
-
property
num_keys¶
-
property
-
class
NiWireframeProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyUnknown.
-
property
flags¶
-
property
-
class
NiZBufferProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiPropertyThis Property controls the Z buffer (OpenGL: depth buffer).
-
property
flags¶
-
property
function¶
-
property
-
class
NodeGroup(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA group of NiNodes references.
-
property
nodes¶
-
property
num_nodes¶
-
property
-
class
OblivionHavokMaterial(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseA material, used by havok shape objects in Oblivion.
-
HAV_MAT_CHAIN= 13¶
-
HAV_MAT_CHAIN_STAIRS= 28¶
-
HAV_MAT_CLOTH= 1¶
-
HAV_MAT_CLOTH_STAIRS= 16¶
-
HAV_MAT_DIRT= 2¶
-
HAV_MAT_DIRT_STAIRS= 17¶
-
HAV_MAT_ELEVATOR= 30¶
-
HAV_MAT_GLASS= 3¶
-
HAV_MAT_GLASS_STAIRS= 18¶
-
HAV_MAT_GRASS= 4¶
-
HAV_MAT_GRASS_STAIRS= 19¶
-
HAV_MAT_HEAVY_METAL= 11¶
-
HAV_MAT_HEAVY_METAL_STAIRS= 26¶
-
HAV_MAT_HEAVY_STONE= 10¶
-
HAV_MAT_HEAVY_STONE_STAIRS= 25¶
-
HAV_MAT_HEAVY_WOOD= 12¶
-
HAV_MAT_HEAVY_WOOD_STAIRS= 27¶
-
HAV_MAT_METAL= 5¶
-
HAV_MAT_METAL_STAIRS= 20¶
-
HAV_MAT_ORGANIC= 6¶
-
HAV_MAT_ORGANIC_STAIRS= 21¶
-
HAV_MAT_RUBBER= 31¶
-
HAV_MAT_SKIN= 7¶
-
HAV_MAT_SKIN_STAIRS= 22¶
-
HAV_MAT_SNOW= 14¶
-
HAV_MAT_SNOW_STAIRS= 29¶
-
HAV_MAT_STONE= 0¶
-
HAV_MAT_STONE_STAIRS= 15¶
-
HAV_MAT_WATER= 8¶
-
HAV_MAT_WATER_STAIRS= 23¶
-
HAV_MAT_WOOD= 9¶
-
HAV_MAT_WOOD_STAIRS= 24¶
-
-
class
OblivionLayer(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSets mesh color in Oblivion Construction Set. Anything higher than 57 is also null.
-
ANIM_STATIC= 2¶
-
AVOID_BOX= 21¶
-
BACK_WEAPON= 53¶
-
BACK_WEAPON2= 54¶
-
BIPED= 8¶
-
BODY= 34¶
-
CAMERA_PICK= 24¶
-
CHAR_CONTROLLER= 20¶
-
CLOUD_TRAP= 16¶
-
CLUTTER= 4¶
-
CUSTOM_PICK_1= 28¶
-
CUSTOM_PICK_2= 29¶
-
DROPPING_PICK= 31¶
-
GROUND= 17¶
-
HEAD= 33¶
-
ITEM_PICK= 25¶
-
LINE_OF_SIGHT= 26¶
-
L_CALF= 41¶
-
L_FOOT= 42¶
-
L_FOREARM= 38¶
-
L_HAND= 39¶
-
L_THIGH= 40¶
-
L_UPPER_ARM= 37¶
-
NONCOLLIDABLE= 15¶
-
NULL= 57¶
-
OTHER= 32¶
-
PATH_PICK= 27¶
-
PONYTAIL= 55¶
-
PORTAL= 18¶
-
PROJECTILE= 6¶
-
PROPS= 10¶
-
QUIVER= 52¶
-
R_CALF= 47¶
-
R_FOOT= 48¶
-
R_FOREARM= 44¶
-
R_HAND= 45¶
-
R_THIGH= 46¶
-
R_UPPER_ARM= 43¶
-
SHIELD= 51¶
-
SIDE_WEAPON= 50¶
-
SPELL= 7¶
-
SPELL_EXPLOSION= 30¶
-
SPINE1= 35¶
-
SPINE2= 36¶
-
STAIRS= 19¶
-
STATIC= 1¶
-
TAIL= 49¶
-
TERRAIN= 13¶
-
TRANSPARENT= 3¶
-
TRAP= 14¶
-
TREES= 9¶
-
TRIGGER= 12¶
-
UNIDENTIFIED= 0¶
-
UNKNOWN1= 22¶
-
UNKNOWN2= 23¶
-
WATER= 11¶
-
WEAPON= 5¶
-
WING= 56¶
-
-
class
OblivionSubShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseHavok Information for packed TriStrip shapes.
-
property
havok_col_filter¶
-
property
material¶
-
property
num_vertices¶
-
property
-
class
OldSkinData(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseUsed to store skin weights in NiTriShapeSkinController.
-
property
unknown_vector¶
-
property
vertex_index¶
-
property
vertex_weight¶
-
property
-
class
PSLoopBehavior(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
PS_LOOP_AGESCALE= 2¶
-
PS_LOOP_CLAMP_BIRTH= 0¶
-
PS_LOOP_CLAMP_DEATH= 1¶
-
PS_LOOP_LOOP= 3¶
-
PS_LOOP_REFLECT= 4¶
-
-
class
Particle(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseparticle array entry
-
property
lifespan¶
-
property
lifetime¶
-
property
timestamp¶
-
property
unknown_short¶
-
property
unknown_vector¶
-
property
velocity¶
-
property
vertex_id¶
-
property
-
class
ParticleDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseParticle Description.
-
property
translation¶
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_floats_1¶
-
property
unknown_int_1¶
-
property
-
class
PixelFormat(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSpecifies the pixel format used by the NiPixelData object to store a texture.
-
PX_FMT_DXT1= 4¶
-
PX_FMT_DXT5= 5¶
-
PX_FMT_DXT5_ALT= 6¶
-
PX_FMT_PAL8= 2¶
-
PX_FMT_RGB8= 0¶
-
PX_FMT_RGBA8= 1¶
-
-
class
PixelLayout(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, describing the color depth of a texture.
-
PIX_LAY_BUMPMAP= 4¶
-
PIX_LAY_COMPRESSED= 3¶
-
PIX_LAY_DEFAULT= 6¶
-
PIX_LAY_HIGH_COLOR_16= 1¶
-
PIX_LAY_PALETTISED= 0¶
-
PIX_LAY_PALETTISED_4= 5¶
-
PIX_LAY_TRUE_COLOR_32= 2¶
-
-
class
Polygon(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseTwo dimensional screen elements.
-
property
num_triangles¶
-
property
num_vertices¶
-
property
triangle_offset¶
-
property
vertex_offset¶
-
property
-
class
PrismaticDescriptor(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
friction¶
-
property
max_distance¶
-
property
min_distance¶
-
property
pivot_a¶
-
property
pivot_b¶
-
property
plane_a¶
-
property
plane_b¶
-
property
rotation_a¶
-
property
rotation_b¶
-
property
rotation_matrix_a¶
-
property
sliding_a¶
-
property
sliding_b¶
-
property
unknown_byte_1¶
-
property
-
class
PropagationMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
PROPAGATE_ALWAYS= 2¶
-
PROPAGATE_NEVER= 3¶
-
PROPAGATE_ON_FAILURE= 1¶
-
PROPAGATE_ON_SUCCESS= 0¶
-
-
class
Ptr(**kwargs)[source]¶ Bases:
pyffi.formats.nif.RefA weak reference to another block, used to point up the hierarchy tree. The reference is not returned by the L{get_refs} function to avoid infinite recursion.
-
get_hash(data=None)[source]¶ Returns a hash value (an immutable object) that can be used to identify the object uniquely.
-
replace_global_node(oldbranch, newbranch, edge_filter=(True, True))[source]¶ >>> from pyffi.formats.nif import NifFormat >>> x = NifFormat.NiNode() >>> y = NifFormat.NiNode() >>> z = NifFormat.NiNode() >>> x.add_child(y) >>> x.children[0] is y True >>> x.children[0] is z False >>> x.replace_global_node(y, z) >>> x.children[0] is y False >>> x.children[0] is z True >>> x.replace_global_node(z, None) >>> x.children[0] is None True
-
-
class
QTransform(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
rotation¶
-
property
scale¶
-
property
translation¶
-
property
-
class
QuatKey(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA special version of the key type used for quaternions. Never has tangents.
-
property
tbc¶
-
property
time¶
-
property
value¶
-
property
-
class
Quaternion(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA quaternion.
-
property
w¶
-
property
x¶
-
property
y¶
-
property
z¶
-
property
-
class
QuaternionXYZW(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA quaternion as it appears in the havok objects.
-
property
w¶
-
property
x¶
-
property
y¶
-
property
z¶
-
property
-
RE_FILENAME= re.compile('^.*\\.(nif|kf|kfa|nifcache|jmi|texcache|pcpatch|nft|item|nif_wii)$', re.IGNORECASE)¶
-
class
RagdollDescriptor(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._RagdollDescriptor,object
-
class
Ref(**kwargs)[source]¶ Bases:
pyffi.object_models.xml.basic.BasicBaseReference to another block.
-
get_hash(data=None)[source]¶ Returns a hash value (an immutable object) that can be used to identify the object uniquely.
-
replace_global_node(oldbranch, newbranch, edge_filter=(True, True))[source]¶ >>> from pyffi.formats.nif import NifFormat >>> x = NifFormat.NiNode() >>> y = NifFormat.NiNode() >>> z = NifFormat.NiNode() >>> x.add_child(y) >>> x.children[0] is y True >>> x.children[0] is z False >>> x.replace_global_node(y, z) >>> x.children[0] is y False >>> x.children[0] is z True >>> x.replace_global_node(z, None) >>> x.children[0] is None True
-
-
class
Region(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA range of indices, which make up a region (such as a submesh).
-
property
num_indices¶
-
property
start_index¶
-
property
-
class
RootCollisionNode(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiNodeMorrowind-specific node for collision mesh.
-
class
SemanticData(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
index¶
-
property
name¶
-
property
-
class
ShaderTexDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseAn extended texture description for shader textures.
-
property
is_used¶
-
property
map_index¶
-
property
texture_data¶
-
property
-
class
ShortString(**kwargs)[source]¶ Bases:
pyffi.object_models.xml.basic.BasicBaseAnother type for strings.
-
class
SizedString(**kwargs)¶ Bases:
pyffi.object_models.xml.basic.BasicBase,pyffi.object_models.editable.EditableLineEditBasic type for strings. The type starts with an unsigned int which describes the length of the string.
>>> from tempfile import TemporaryFile >>> f = TemporaryFile() >>> from pyffi.object_models import FileFormat >>> data = FileFormat.Data() >>> s = SizedString() >>> if f.write('\x07\x00\x00\x00abcdefg'.encode("ascii")): pass # ignore result for py3k >>> if f.seek(0): pass # ignore result for py3k >>> s.read(f, data) >>> str(s) 'abcdefg' >>> if f.seek(0): pass # ignore result for py3k >>> s.set_value('Hi There') >>> s.write(f, data) >>> if f.seek(0): pass # ignore result for py3k >>> m = SizedString() >>> m.read(f, data) >>> str(m) 'Hi There'
-
get_hash(data=None)¶ Return a hash value for this string.
- Returns
An immutable object that can be used as a hash.
-
get_size(data=None)¶ Return number of bytes this type occupies in a file.
- Returns
Number of bytes.
-
get_value()¶ Return the string.
- Returns
The stored string.
-
read(stream, data)¶ Read string from stream.
- Parameters
stream (file) – The stream to read from.
-
write(stream, data)¶ Write string to stream.
- Parameters
stream (file) – The stream to write to.
-
-
class
SkinData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._SkinData,object
-
class
SkinPartition(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._SkinPartition,object
-
class
SkinShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseReference to shape and skin instance.
-
property
shape¶
-
property
skin_instance¶
-
property
-
class
SkinShapeGroup(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseUnknown.
-
property
link_pairs¶
-
property
num_link_pairs¶
-
property
-
class
SkinTransform(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._SkinTransform,object
-
class
SkinWeight(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA weighted vertex.
-
property
index¶
-
property
weight¶
-
property
-
class
SkyObjectType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSets what sky function this object fulfills in BSSkyShaderProperty or SkyShaderProperty.
-
BSSM_SKY= 2¶
-
BSSM_SKY_CLOUDS= 3¶
-
BSSM_SKY_MOON_STARS_MASK= 7¶
-
BSSM_SKY_STARS= 5¶
-
BSSM_SKY_SUNGLARE= 1¶
-
BSSM_SKY_TEXTURE= 0¶
-
-
class
SkyShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderLightingPropertyBethesda-specific node? Found in Fallout3
-
property
file_name¶
-
property
sky_object_type¶
-
property
-
class
SkyrimHavokMaterial(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseA material, used by havok shape objects in Skyrim.
-
MAT_BARREL= 732141076¶
-
MAT_BOTTLE= 493553910¶
-
MAT_BROKEN_STONE= 131151687¶
-
MAT_CLOTH= 3839073443¶
-
MAT_DIRT= 3106094762¶
-
MAT_DRAGON= 2518321175¶
-
MAT_GLASS= 3739830338¶
-
MAT_GRASS= 1848600814¶
-
MAT_GRAVEL= 428587608¶
-
MAT_HEAVY_METAL= 2229413539¶
-
MAT_HEAVY_STONE= 1570821952¶
-
MAT_HEAVY_WOOD= 3070783559¶
-
MAT_ICE= 873356572¶
-
MAT_LIGHT_WOOD= 365420259¶
-
MAT_MATERIAL_ARMOR_HEAVY= 3708432437¶
-
MAT_MATERIAL_ARMOR_LIGHT= 3424720541¶
-
MAT_MATERIAL_ARROW= 3725505938¶
-
MAT_MATERIAL_AXE_1HAND= 1305674443¶
-
MAT_MATERIAL_BASKET= 790784366¶
-
MAT_MATERIAL_BLADE_1HAND= 1060167844¶
-
MAT_MATERIAL_BLADE_1HAND_SMALL= 2617944780¶
-
MAT_MATERIAL_BLADE_2HAND= 2022742644¶
-
MAT_MATERIAL_BLUNT_2HAND= 3969592277¶
-
MAT_MATERIAL_BONE= 3049421844¶
-
MAT_MATERIAL_BOOK= 1264672850¶
-
MAT_MATERIAL_BOTTLE_SMALL= 2025794648¶
-
MAT_MATERIAL_BOULDER_LARGE= 1885326971¶
-
MAT_MATERIAL_BOULDER_MEDIUM= 4283869410¶
-
MAT_MATERIAL_BOULDER_SMALL= 1550912982¶
-
MAT_MATERIAL_BOWS_STAVES= 1607128641¶
-
MAT_MATERIAL_CARPET= 1286705471¶
-
MAT_MATERIAL_CERAMIC_MEDIUM= 781661019¶
-
MAT_MATERIAL_CHAIN= 3074114406¶
-
MAT_MATERIAL_CHAIN_METAL= 438912228¶
-
MAT_MATERIAL_COIN= 3589100606¶
-
MAT_MATERIAL_SHIELD_HEAVY= 3702389584¶
-
MAT_MATERIAL_SHIELD_LIGHT= 3448167928¶
-
MAT_MATERIAL_SKIN_LARGE= 2965929619¶
-
MAT_MATERIAL_SKIN_SMALL= 2632367422¶
-
MAT_MATERIAL_STONE_AS_STAIRS= 1886078335¶
-
MAT_MATERIAL_WOOD_AS_STAIRS= 1803571212¶
-
MAT_MUD= 1486385281¶
-
MAT_ORGANIC= 2974920155¶
-
MAT_SAND= 2168343821¶
-
MAT_SKIN= 591247106¶
-
MAT_SNOW= 398949039¶
-
MAT_SOLID_METAL= 1288358971¶
-
MAT_STAIRS_BROKEN_STONE= 2892392795¶
-
MAT_STAIRS_SNOW= 1560365355¶
-
MAT_STAIRS_STONE= 899511101¶
-
MAT_STAIRS_WOOD= 1461712277¶
-
MAT_STONE= 3741512247¶
-
MAT_UNKNOWN_1028101969= 1028101969¶
-
MAT_UNKNOWN_1440721808= 1440721808¶
-
MAT_UNKNOWN_1574477864= 1574477864¶
-
MAT_UNKNOWN_1591009235= 1591009235¶
-
MAT_WATER= 1024582599¶
-
MAT_WOOD= 500811281¶
-
-
class
SkyrimLayer(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBasePhysical purpose of collision object? The setting affects object’s havok behavior in game. Anything higher than 47 is also null.
-
ACOUSTIC_SPACE= 21¶
-
ACTORZONE= 22¶
-
ANIMSTATIC= 2¶
-
AVOIDBOX= 34¶
-
BIPED= 8¶
-
BIPED_NO_CC= 33¶
-
CAMERAPICK= 39¶
-
CAMERASHPERE= 36¶
-
CHARCONTROLLER= 30¶
-
CLOUD_TRAP= 16¶
-
CLUTTER= 4¶
-
COLLISIONBOX= 35¶
-
CONEPROJECTILE= 38¶
-
CUSTOMPICK1= 43¶
-
CUSTOMPICK2= 44¶
-
DEADBIP= 32¶
-
DEBRIS_LARGE= 20¶
-
DEBRIS_SMALL= 19¶
-
DOORDETECTION= 37¶
-
DROPPINGPICK= 46¶
-
GASTRAP= 24¶
-
GROUND= 17¶
-
INVISIBLE_WALL= 27¶
-
ITEMPICK= 40¶
-
LINEOFSIGHT= 41¶
-
NONCOLLIDABLE= 15¶
-
NULL= 47¶
-
PATHPICK= 42¶
-
PORTAL= 18¶
-
PROJECTILE= 6¶
-
PROJECTILEZONE= 23¶
-
PROPS= 10¶
-
SHELLCASING= 25¶
-
SPELL= 7¶
-
SPELLEXPLOSION= 45¶
-
STAIRHELPER= 31¶
-
STATIC= 1¶
-
TERRAIN= 13¶
-
TRANSPARENT= 3¶
-
TRANSPARENT_SMALL= 26¶
-
TRANSPARENT_SMALL_ANIM= 28¶
-
TRAP= 14¶
-
TREES= 9¶
-
TRIGGER= 12¶
-
UNIDENTIFIED= 0¶
-
WARD= 29¶
-
WATER= 11¶
-
WEAPON= 5¶
-
-
class
SkyrimShaderPropertyFlags1(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseSkyrim Shader Property Flags 1
-
property
slsf_1_cast_shadows¶
-
property
slsf_1_decal¶
-
property
slsf_1_dynamic_decal¶
-
property
slsf_1_environment_mapping¶
-
property
slsf_1_external_emittance¶
-
property
slsf_1_eye_environment_mapping¶
-
property
slsf_1_face_gen_rgb_tint¶
-
property
slsf_1_facegen_detail_map¶
-
property
slsf_1_fire_refraction¶
-
property
slsf_1_greyscale_to_palette_alpha¶
-
property
slsf_1_greyscale_to_palette_color¶
-
property
slsf_1_hair_soft_lighting¶
-
property
slsf_1_landscape¶
-
property
slsf_1_localmap_hide_secret¶
-
property
slsf_1_model_space_normals¶
-
property
slsf_1_multiple_textures¶
-
property
slsf_1_non_projective_shadows¶
-
property
slsf_1_own_emit¶
-
property
slsf_1_parallax¶
-
property
slsf_1_parallax_occlusion¶
-
property
slsf_1_projected_uv¶
-
property
slsf_1_recieve_shadows¶
-
property
slsf_1_refraction¶
-
property
slsf_1_remappable_textures¶
-
property
slsf_1_screendoor_alpha_fade¶
-
property
slsf_1_skinned¶
-
property
slsf_1_soft_effect¶
-
property
slsf_1_specular¶
-
property
slsf_1_temp_refraction¶
-
property
slsf_1_use_falloff¶
-
property
slsf_1_vertex_alpha¶
-
property
slsf_1_z_buffer_test¶
-
property
-
class
SkyrimShaderPropertyFlags2(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseSkyrim Shader Property Flags 2
-
property
slsf_2_anisotropic_lighting¶
-
property
slsf_2_assume_shadowmask¶
-
property
slsf_2_back_lighting¶
-
property
slsf_2_billboard¶
-
property
slsf_2_cloud_lod¶
-
property
slsf_2_double_sided¶
-
property
slsf_2_effect_lighting¶
-
property
slsf_2_env_map_light_fade¶
-
property
slsf_2_fit_slope¶
-
property
slsf_2_glow_map¶
-
property
slsf_2_hd_lod_objects¶
-
property
slsf_2_hide_on_local_map¶
-
property
slsf_2_lod_landscape¶
-
property
slsf_2_lod_objects¶
-
property
slsf_2_multi_index_snow¶
-
property
slsf_2_multi_layer_parallax¶
-
property
slsf_2_no_fade¶
-
property
slsf_2_no_lod_land_blend¶
-
property
slsf_2_no_transparency_multisampling¶
-
property
slsf_2_packed_tangent¶
-
property
slsf_2_premult_alpha¶
-
property
slsf_2_rim_lighting¶
-
property
slsf_2_soft_lighting¶
-
property
slsf_2_tree_anim¶
-
property
slsf_2_uniform_scale¶
-
property
slsf_2_unused_01¶
-
property
slsf_2_unused_02¶
-
property
slsf_2_vertex_colors¶
-
property
slsf_2_vertex_lighting¶
-
property
slsf_2_weapon_blood¶
-
property
slsf_2_wireframe¶
-
property
slsf_2_z_buffer_write¶
-
property
-
class
SkyrimWaterShaderFlags(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.bit_struct.BitStructBaseSkyrim water shader property flags
-
property
swsf_1_bypass_refraction_map¶
-
property
swsf_1_enabled¶
-
property
swsf_1_highlight_layer_toggle¶
-
property
swsf_1_unknown_0¶
-
property
swsf_1_unknown_3¶
-
property
swsf_1_unknown_4¶
-
property
swsf_1_unknown_5¶
-
property
swsf_1_water_toggle¶
-
property
-
class
SolverDeactivation(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseA list of possible solver deactivation settings. This value defines how the solver deactivates objects. The solver works on a per object basis. Note: Solver deactivation does not save CPU, but reduces creeping of movable objects in a pile quite dramatically.
-
SOLVER_DEACTIVATION_HIGH= 4¶
-
SOLVER_DEACTIVATION_INVALID= 0¶
-
SOLVER_DEACTIVATION_LOW= 2¶
-
SOLVER_DEACTIVATION_MAX= 5¶
-
SOLVER_DEACTIVATION_MEDIUM= 3¶
-
SOLVER_DEACTIVATION_OFF= 1¶
-
-
class
SortingMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
SORTING_INHERIT= 0¶
-
SORTING_OFF= 1¶
-
-
class
SphereBV(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA sphere.
-
property
center¶
-
property
radius¶
-
property
-
class
StencilAction(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThis enum defines the various actions used in conjunction with the stencil buffer. For a detailed description of the individual options please refer to the OpenGL docs.
-
ACTION_DECREMENT= 4¶
-
ACTION_INCREMENT= 3¶
-
ACTION_INVERT= 5¶
-
ACTION_KEEP= 0¶
-
ACTION_REPLACE= 2¶
-
ACTION_ZERO= 1¶
-
-
class
StencilCompareMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThis enum contains the options for doing stencil buffer tests.
-
TEST_ALWAYS= 7¶
-
TEST_EQUAL= 2¶
-
TEST_GREATER= 4¶
-
TEST_GREATER_EQUAL= 6¶
-
TEST_LESS= 1¶
-
TEST_LESS_EQUAL= 3¶
-
TEST_NEVER= 0¶
-
TEST_NOT_EQUAL= 5¶
-
-
class
StiffSpringDescriptor(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
length¶
-
property
pivot_a¶
-
property
pivot_b¶
-
property
-
StringIndex¶ alias of
pyffi.object_models.common.UInt
-
class
StringOffset(**kwargs)[source]¶ Bases:
pyffi.object_models.common.IntThis is just an integer with -1 as default value.
-
class
StringPalette(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._StringPalette,object-
add_string(text)[source]¶ Adds string to palette (will recycle existing strings if possible) and return offset to the string in the palette.
>>> from pyffi.formats.nif import NifFormat >>> pal = NifFormat.StringPalette() >>> pal.add_string("abc") 0 >>> pal.add_string("abc") 0 >>> pal.add_string("def") 4 >>> pal.add_string("") -1 >>> print(pal.get_string(4).decode("ascii")) def
-
clear()[source]¶ Clear all strings in the palette.
>>> from pyffi.formats.nif import NifFormat >>> pal = NifFormat.StringPalette() >>> pal.add_string("abc") 0 >>> pal.add_string("def") 4 >>> # pal.palette.decode("ascii") needs lstrip magic for py3k >>> print(repr(pal.palette.decode("ascii")).lstrip("u")) 'abc\x00def\x00' >>> pal.clear() >>> # pal.palette.decode("ascii") needs lstrip magic for py3k >>> print(repr(pal.palette.decode("ascii")).lstrip("u")) ''
-
get_all_strings()[source]¶ Return a list of all strings.
>>> from pyffi.formats.nif import NifFormat >>> pal = NifFormat.StringPalette() >>> pal.add_string("abc") 0 >>> pal.add_string("def") 4 >>> for x in pal.get_all_strings(): ... print(x.decode("ascii")) abc def >>> # pal.palette.decode("ascii") needs lstrip magic for py3k >>> print(repr(pal.palette.decode("ascii")).lstrip("u")) 'abc\x00def\x00'
-
get_string(offset)[source]¶ Return string at given offset.
>>> from pyffi.formats.nif import NifFormat >>> pal = NifFormat.StringPalette() >>> pal.add_string("abc") 0 >>> pal.add_string("def") 4 >>> print(pal.get_string(0).decode("ascii")) abc >>> print(pal.get_string(4).decode("ascii")) def >>> pal.get_string(5) pyffi.nif.stringpalette:WARNING:StringPalette: no string starts at offset 5 (string is b'ef', preceeding character is b'd') b'ef' >>> pal.get_string(100) Traceback (most recent call last): ... ValueError: ...
-
-
class
SubConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
ball_and_socket¶
-
property
entities¶
-
property
hinge¶
-
property
limited_hinge¶
-
property
num_entities¶
-
property
priority¶
-
property
prismatic¶
-
property
ragdoll¶
-
property
stiff_spring¶
-
property
type¶
-
property
-
class
SymmetryType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDetermines symetry type used by NiPSysBombModifier.
-
CYLINDRICAL_SYMMETRY= 1¶
-
PLANAR_SYMMETRY= 2¶
-
SPHERICAL_SYMMETRY= 0¶
-
-
class
SyncPoint(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSpecifies the time when an application must syncronize for some reason.
-
SYNC_ANY= 32768¶
-
SYNC_PHYSICS_COMPLETED= 32864¶
-
SYNC_PHYSICS_SIMULATE= 32848¶
-
SYNC_POST_UPDATE= 32800¶
-
SYNC_REFLECTIONS= 32880¶
-
SYNC_RENDER= 32832¶
-
SYNC_UPDATE= 32784¶
-
SYNC_VISIBLE= 32816¶
-
-
class
TBC(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseTension, bias, continuity.
-
property
b¶
-
property
c¶
-
property
t¶
-
property
-
class
TallGrassShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPropertyBethesda-specific node.
-
property
file_name¶
-
property
-
class
TargetColor(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseUsed by NiPoint3InterpControllers to select which type of color in the controlled object that will be animated.
-
TC_AMBIENT= 0¶
-
TC_DIFFUSE= 1¶
-
TC_SELF_ILLUM= 3¶
-
TC_SPECULAR= 2¶
-
-
class
TexClampMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSpecifies the availiable texture clamp modes. That is, the behavior of pixels outside the range of the texture.
-
CLAMP_S_CLAMP_T= 0¶
-
CLAMP_S_WRAP_T= 1¶
-
WRAP_S_CLAMP_T= 2¶
-
WRAP_S_WRAP_T= 3¶
-
-
class
TexCoord(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._TexCoord,object
-
class
TexDesc(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseTexture description.
-
property
center_offset¶
-
property
clamp_mode¶
-
property
filter_mode¶
-
property
flags¶
-
property
has_texture_transform¶
-
property
ps_2_k¶
-
property
ps_2_l¶
-
property
source¶
-
property
tiling¶
-
property
transform_type¶
-
property
translation¶
-
property
unknown_1¶
-
property
unknown_short¶
-
property
uv_set¶
-
property
w_rotation¶
-
property
-
class
TexFilterMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseSpecifies the availiable texture filter modes. That is, the way pixels within a texture are blended together when textures are displayed on the screen at a size other than their original dimentions.
-
FILTER_BILERP= 1¶
-
FILTER_BILERP_MIPNEAREST= 5¶
-
FILTER_NEAREST= 0¶
-
FILTER_NEAREST_MIPLERP= 4¶
-
FILTER_NEAREST_MIPNEAREST= 3¶
-
FILTER_TRILERP= 2¶
-
-
class
TexSource(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA texture source.
-
property
file_name¶
-
property
pixel_data¶
-
property
unknown_byte¶
-
property
unknown_link¶
-
property
use_external¶
-
property
-
class
TexTransform(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseDetermines how a NiTextureTransformController animates the UV coordinates.
-
TT_ROTATE= 2¶
-
TT_SCALE_U= 3¶
-
TT_SCALE_V= 4¶
-
TT_TRANSLATE_U= 0¶
-
TT_TRANSLATE_V= 1¶
-
-
class
TexType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe type of texture.
-
BASE_MAP= 0¶
-
BUMP_MAP= 5¶
-
DARK_MAP= 1¶
-
DECAL_0_MAP= 8¶
-
DECAL_1_MAP= 9¶
-
DECAL_2_MAP= 10¶
-
DECAL_3_MAP= 11¶
-
DETAIL_MAP= 2¶
-
GLOSS_MAP= 3¶
-
GLOW_MAP= 4¶
-
NORMAL_MAP= 6¶
-
UNKNOWN2_MAP= 7¶
-
-
class
TileShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderLightingPropertyBethesda-specific node.
-
property
file_name¶
-
property
-
class
Triangle(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseList of three vertex indices.
-
property
v_1¶
-
property
v_2¶
-
property
v_3¶
-
property
-
class
UnionBV(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
bounding_volumes¶
-
property
num_bv¶
-
property
-
class
Vector3(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._Vector3,object
-
class
Vector4(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._Vector4,object>>> from pyffi.formats.nif import NifFormat >>> vec = NifFormat.Vector4() >>> vec.x = 1.0 >>> vec.y = 2.0 >>> vec.z = 3.0 >>> vec.w = 4.0 >>> print(vec) [ 1.000 2.000 3.000 4.000 ] >>> vec.as_list() [1.0, 2.0, 3.0, 4.0] >>> vec.as_tuple() (1.0, 2.0, 3.0, 4.0) >>> print(vec.get_vector_3()) [ 1.000 2.000 3.000 ] >>> vec2 = NifFormat.Vector4() >>> vec == vec2 False >>> vec2.x = 1.0 >>> vec2.y = 2.0 >>> vec2.z = 3.0 >>> vec2.w = 4.0 >>> vec == vec2 True
-
class
VelocityType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseControls the way the a particle mesh emitter determines the starting speed and direction of the particles that are emitted.
-
VELOCITY_USE_DIRECTION= 2¶
-
VELOCITY_USE_NORMALS= 0¶
-
VELOCITY_USE_RANDOM= 1¶
-
-
class
VertMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseAn unsigned 32-bit integer, which describes how to apply vertex colors.
-
VERT_MODE_SRC_AMB_DIF= 2¶
-
VERT_MODE_SRC_EMISSIVE= 1¶
-
VERT_MODE_SRC_IGNORE= 0¶
-
-
class
VolumetricFogShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPropertyBethesda-specific node.
-
class
WaterShaderProperty(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.BSShaderPropertyBethesda-specific node? Found in Fallout3
-
class
ZCompareMode(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThis enum contains the options for doing z buffer tests.
-
ZCOMP_ALWAYS= 0¶
-
ZCOMP_EQUAL= 2¶
-
ZCOMP_GREATER= 4¶
-
ZCOMP_GREATER_EQUAL= 6¶
-
ZCOMP_LESS= 1¶
-
ZCOMP_LESS_EQUAL= 3¶
-
ZCOMP_NEVER= 7¶
-
ZCOMP_NOT_EQUAL= 5¶
-
-
class
bhkAabbPhantom(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShapePhantomBethesda-specific node.
-
property
unknown_ints_1¶
-
property
-
class
bhkBallAndSocketConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkConstraintA Ball and Socket Constraint.
-
property
ball_and_socket¶
-
property
-
class
bhkBallSocketConstraintChain(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkSerializableA Ball and Socket Constraint chain.
-
property
floats_1¶
-
property
links¶
-
property
links_2¶
-
property
num_floats¶
-
property
num_links¶
-
property
num_links_2¶
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
-
class
bhkBlendCollisionObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkCollisionObjectUnknown.
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
-
class
bhkBlendController(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiTimeControllerUnknown. Is apparently only used in skeleton.nif files.
-
property
unknown_int¶
-
property
-
class
bhkBoxShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkBoxShape,object
-
class
bhkBreakableConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkConstraintA breakable constraint.
-
property
remove_if_broken¶
-
property
sub_constraint¶
-
property
threshold¶
-
property
-
class
bhkBvTreeShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShapeA tree-like Havok data structure stored in an assembly-like binary code?
-
class
bhkCMSDBigTris(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseTriangle indices used in pair with “Big Verts” in a bhkCompressedMeshShapeData.
-
property
triangle_1¶
-
property
triangle_2¶
-
property
triangle_3¶
-
property
unknown_int_1¶
-
property
unknown_short_1¶
-
property
-
class
bhkCMSDChunk(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseDefines subshape chunks in bhkCompressedMeshShapeData
-
property
indices¶
-
property
indices_2¶
-
property
material_index¶
-
property
num_indices¶
-
property
num_indices_2¶
-
property
num_strips¶
-
property
num_vertices¶
-
property
strips¶
-
property
transform_index¶
-
property
translation¶
-
property
unknown_short_1¶
-
property
vertices¶
-
property
-
class
bhkCMSDMaterial(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBasePer-chunk material, used in bhkCompressedMeshShapeData
-
property
byte_set_to_0¶
-
property
layer¶
-
property
material¶
-
property
short_set_to_0¶
-
property
-
class
bhkCMSDTransform(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA set of transformation data: translation and rotation
-
property
rotation¶
-
property
translation¶
-
property
-
class
bhkCapsuleShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkCapsuleShape,object
-
class
bhkCollisionObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkNiCollisionObjectHavok related collision object?
-
class
bhkCompressedMeshShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShapeCompressed collision mesh.
-
property
data¶
-
property
radius¶
-
property
scale¶
-
property
target¶
-
property
unknown_4_bytes¶
-
property
unknown_float_1¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
unknown_float_5¶
-
property
unknown_floats_1¶
-
property
unknown_int_1¶
-
property
-
class
bhkCompressedMeshShapeData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkRefObjectA compressed mesh shape for collision in Skyrim.
-
property
big_tris¶
-
property
big_verts¶
-
property
bits_per_index¶
-
property
bits_per_w_index¶
-
property
bounds_max¶
-
property
bounds_min¶
-
property
chunk_materials¶
-
property
chunk_transforms¶
-
property
chunks¶
-
property
error¶
-
property
mask_index¶
-
property
mask_w_index¶
-
property
num_big_tris¶
-
property
num_big_verts¶
-
property
num_chunks¶
-
property
num_materials¶
-
property
num_transforms¶
-
property
unknown_byte_1¶
-
property
unknown_byte_2¶
-
property
unknown_int_12¶
-
property
unknown_int_3¶
-
property
unknown_int_4¶
-
property
unknown_int_5¶
-
property
unknown_int_6¶
-
property
-
class
bhkConstraint(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkConstraint,object
-
class
bhkConvexListShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShapeA havok shape. A list of convex shapes.
Do not put a bhkPackedNiTriStripsShape in the Sub Shapes. Use a separate collision nodes without a list shape for those.
Also, shapes collected in a bhkListShape may not have the correct walking noise, so only use it for non-walkable objects.
-
property
material¶
-
property
num_sub_shapes¶
-
property
sub_shapes¶
-
property
unknown_byte_1¶
-
property
unknown_float_1¶
-
property
unknown_floats¶
-
property
-
class
bhkConvexShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkSphereRepShapeA havok shape.
-
class
bhkConvexTransformShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkTransformShapeA convex transformed shape?
-
class
bhkConvexVerticesShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkConvexVerticesShape,object
-
class
bhkEntity(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkWorldObjectA havok node, describes physical properties.
-
class
bhkHingeConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkConstraintA hinge constraint.
-
property
hinge¶
-
property
-
class
bhkLimitedHingeConstraint(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkLimitedHingeConstraint,object
-
class
bhkLiquidAction(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkSerializableBethesda-specific node.
-
property
unknown_float_1¶
-
property
unknown_float_2¶
-
property
unknown_float_3¶
-
property
unknown_float_4¶
-
property
unknown_int_1¶
-
property
unknown_int_2¶
-
property
unknown_int_3¶
-
property
-
class
bhkListShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkListShape,object
-
class
bhkMalleableConstraint(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkMalleableConstraint,object
-
class
bhkMeshShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShape-
property
num_strips_data¶
-
property
num_unknown_floats¶
-
property
strips_data¶
-
property
unknown_1¶
-
property
unknown_2¶
-
property
unknown_floats¶
-
property
-
class
bhkMoppBvTreeShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkMoppBvTreeShape,object-
get_mass_center_inertia(density=1, solid=True)[source]¶ Return mass, center of gravity, and inertia tensor.
-
parse_mopp(start=0, depth=0, toffset=0, verbose=False)[source]¶ The mopp data is printed to the debug channel while parsed. Returns list of indices into mopp data of the bytes processed and a list of triangle indices encountered.
The verbose argument is ignored (and is deprecated).
-
-
class
bhkMultiSphereShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkMultiSphereShape,object
-
class
bhkNiCollisionObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiCollisionObjectHavok related collision object?
-
property
body¶
-
property
flags¶
-
property
-
class
bhkNiTriStripsShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkNiTriStripsShape,object
-
class
bhkOrientHingedBodyAction(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkSerializableBethesda-Specific node.
-
property
unknown_ints_1¶
-
property
-
class
bhkPCollisionObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkNiCollisionObjectUnknown.
-
class
bhkPackedNiTriStripsShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkPackedNiTriStripsShape,object-
get_triangle_hash_generator()[source]¶ Generator which produces a tuple of integers, or None in degenerate case, for each triangle to ease detection of duplicate triangles.
>>> shape = NifFormat.bhkPackedNiTriStripsShape() >>> data = NifFormat.hkPackedNiTriStripsData() >>> shape.data = data >>> data.num_triangles = 6 >>> data.triangles.update_size() >>> data.triangles[0].triangle.v_1 = 0 >>> data.triangles[0].triangle.v_2 = 1 >>> data.triangles[0].triangle.v_3 = 2 >>> data.triangles[1].triangle.v_1 = 2 >>> data.triangles[1].triangle.v_2 = 1 >>> data.triangles[1].triangle.v_3 = 3 >>> data.triangles[2].triangle.v_1 = 3 >>> data.triangles[2].triangle.v_2 = 2 >>> data.triangles[2].triangle.v_3 = 1 >>> data.triangles[3].triangle.v_1 = 3 >>> data.triangles[3].triangle.v_2 = 1 >>> data.triangles[3].triangle.v_3 = 2 >>> data.triangles[4].triangle.v_1 = 0 >>> data.triangles[4].triangle.v_2 = 0 >>> data.triangles[4].triangle.v_3 = 3 >>> data.triangles[5].triangle.v_1 = 1 >>> data.triangles[5].triangle.v_2 = 3 >>> data.triangles[5].triangle.v_3 = 4 >>> list(shape.get_triangle_hash_generator()) [(0, 1, 2), (1, 3, 2), (1, 3, 2), (1, 2, 3), None, (1, 3, 4)]
- Returns
A generator yielding a hash value for each triangle.
-
get_vertex_hash_generator(vertexprecision=3, subshape_index=None)[source]¶ Generator which produces a tuple of integers for each vertex to ease detection of duplicate/close enough to remove vertices. The precision parameter denote number of significant digits behind the comma.
For vertexprecision, 3 seems usually enough (maybe we’ll have to increase this at some point).
>>> shape = NifFormat.bhkPackedNiTriStripsShape() >>> data = NifFormat.hkPackedNiTriStripsData() >>> shape.data = data >>> shape.num_sub_shapes = 2 >>> shape.sub_shapes.update_size() >>> data.num_vertices = 3 >>> shape.sub_shapes[0].num_vertices = 2 >>> shape.sub_shapes[1].num_vertices = 1 >>> data.vertices.update_size() >>> data.vertices[0].x = 0.0 >>> data.vertices[0].y = 0.1 >>> data.vertices[0].z = 0.2 >>> data.vertices[1].x = 1.0 >>> data.vertices[1].y = 1.1 >>> data.vertices[1].z = 1.2 >>> data.vertices[2].x = 2.0 >>> data.vertices[2].y = 2.1 >>> data.vertices[2].z = 2.2 >>> list(shape.get_vertex_hash_generator()) [(0, (0, 100, 200)), (0, (1000, 1100, 1200)), (1, (2000, 2100, 2200))] >>> list(shape.get_vertex_hash_generator(subshape_index=0)) [(0, 100, 200), (1000, 1100, 1200)] >>> list(shape.get_vertex_hash_generator(subshape_index=1)) [(2000, 2100, 2200)]
- Parameters
vertexprecision (float) – Precision to be used for vertices.
- Returns
A generator yielding a hash value for each vertex.
-
-
class
bhkPhantom(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkWorldObjectHavok object that do not react with other objects when they collide (causing deflection, etc.) but still trigger collision notifications to the game. Possible uses are traps, portals, AI fields, etc.
-
class
bhkPrismaticConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkConstraintA prismatic constraint.
-
property
prismatic¶
-
property
-
class
bhkRDTConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
entity_a¶
-
property
entity_b¶
-
property
malleable_constraint¶
-
property
priority¶
-
property
ragdoll¶
-
property
type¶
-
property
unknown_int¶
-
property
-
class
bhkRDTMalleableConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA malleable constraint.
-
property
damping¶
-
property
entity_a¶
-
property
entity_b¶
-
property
hinge¶
-
property
limited_hinge¶
-
property
priority¶
-
property
ragdoll¶
-
property
type¶
-
property
unknown_int¶
-
property
-
class
bhkRagdollConstraint(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkRagdollConstraint,object
-
class
bhkRagdollTemplate(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectFound in Fallout 3, more ragdoll info? (meshesragdollconstraint*.rdt)
-
property
bones¶
-
property
name¶
-
property
num_bones¶
-
property
-
class
bhkRagdollTemplateData(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.NiObjectData for bhkRagdollTemplate
-
property
constraint¶
-
property
flag_or_num_constraints¶
-
property
friction¶
-
property
mass¶
-
property
name¶
-
property
radius¶
-
property
restitution¶
-
property
unknown_int¶
-
property
-
class
bhkRefObject(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkRefObject,object
-
class
bhkRigidBody(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkRigidBody,object
-
class
bhkRigidBodyT(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkRigidBodyUnknown.
-
class
bhkSPCollisionObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkPCollisionObjectUnknown.
-
class
bhkSerializable(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkRefObjectHavok objects that can be saved and loaded from disk?
-
class
bhkShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkSerializableA Havok Shape?
-
class
bhkShapeCollection(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShapeHavok collision object that uses multiple shapes?
-
class
bhkShapePhantom(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkPhantomA Havok phantom that uses a Havok shape object for its collision volume instead of just a bounding box.
-
class
bhkSimpleShapePhantom(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShapePhantomUnknown shape.
-
property
unknown_float¶
-
property
unknown_floats_2¶
-
property
unkown_floats¶
-
property
-
class
bhkSphereRepShape(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkShapeA havok shape, perhaps with a bounding sphere for quick rejection in addition to more detailed shape data?
-
property
material¶
-
property
radius¶
-
property
-
class
bhkSphereShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkSphereShape,object
-
class
bhkStiffSpringConstraint(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkConstraintA spring constraint.
-
property
stiff_spring¶
-
property
-
class
bhkTransformShape(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._bhkTransformShape,object
-
class
bhkWorldObject(template=None, argument=None, parent=None)¶ Bases:
pyffi.formats.nif.bhkSerializableHavok objects that have a position in the world?
-
property
havok_col_filter¶
-
property
shape¶
-
property
-
class
bool(**kwargs)[source]¶ Bases:
pyffi.object_models.xml.basic.BasicBase,pyffi.object_models.editable.EditableBoolComboBoxBasic implementation of a 32-bit (8-bit for versions > 4.0.0.2) boolean type.
>>> i = NifFormat.bool() >>> i.set_value('false') >>> i.get_value() False >>> i.set_value('true') >>> i.get_value() True
-
byte¶ alias of
pyffi.object_models.common.UByte
-
char¶ alias of
pyffi.object_models.common.Char
-
float¶ alias of
pyffi.object_models.common.Float
-
games= {'?': [167772419], 'Atlantica': [335675400], 'Axis and Allies': [167837696], 'Bully SE': [335740937], 'Civilization IV': [67239938, 67240192, 67240448, 167772416, 167837696, 167903232, 335544324], 'Culpa Innata': [67240448], 'Dark Age of Camelot': [33751040, 50332416, 50397184, 67174412, 67240192, 67240448, 167837696], 'Divinity 2': [335740937], 'Emerge': [335675399, 335675400, 335740929, 335740930, 335740931, 335740934, 503316482], 'Empire Earth II': [67240448, 167837696], 'Empire Earth III': [335675399, 335675400], 'Entropia Universe': [167837696], 'Epic Mickey': [335938816], 'Fallout 3': [335675399], 'Freedom Force': [67108864, 67108866], 'Freedom Force vs. the 3rd Reich': [167837696], 'Howling Sword': [335740937], 'Kohan 2': [167837696], 'KrazyRain': [335872000, 335937536], 'Lazeska': [335740937], 'Loki': [167903232], 'Megami Tensei: Imagine': [335609859], 'Morrowind': [67108866], 'NeoSteam': [167837696], 'Oblivion': [50528269, 167772416, 167772418, 167837797, 167837802, 167903232, 335544324, 335544325], 'Prison Tycoon': [167903232], 'Pro Cycling Manager': [167903232], 'Red Ocean': [167903232], 'Rocksmith': [503382019], 'Rocksmith 2014': [503382019], "Sid Meier's Railroads": [335544324], 'Skyrim': [335675399], 'Star Trek: Bridge Commander': [50331648, 50397184], 'The Guild 2': [167837696], 'Warhammer': [335740937], 'Wildlife Park 2': [167837696, 167903232], 'Worldshift': [167903233, 168034305], 'Zoo Tycoon 2': [167772416]}¶
-
class
hkConstraintType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBaseThe type of constraint.
-
BallAndSocket= 0¶
-
Hinge= 1¶
-
Prismatic= 6¶
-
Ragdoll= 7¶
-
StiffSpring= 8¶
-
-
class
hkPackedNiTriStripsData(template=None, argument=None, parent=None)[source]¶ Bases:
pyffi.formats.nif._hkPackedNiTriStripsData,object
-
class
hkResponseType(**kwargs)¶ Bases:
pyffi.object_models.xml.enum.EnumBase-
RESPONSE_INVALID= 0¶
-
RESPONSE_NONE= 3¶
-
RESPONSE_REPORTING= 2¶
-
RESPONSE_SIMPLE_CONTACT= 1¶
-
-
class
hkTriangle(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBaseA triangle with extra data used for physics.
-
property
normal¶
-
property
triangle¶
-
property
welding_info¶
-
property
-
int¶ alias of
pyffi.object_models.common.Int
-
class
physXMaterialRef(template=None, argument=None, parent=None)¶ Bases:
pyffi.object_models.xml.struct_.StructBase-
property
material_desc¶
-
property
number¶
-
property
unknown_byte_1¶
-
property
-
short¶ alias of
pyffi.object_models.common.Short
-
class
string(**kwargs)[source]¶ Bases:
pyffi.object_models.common.SizedString-
get_hash(data=None)[source]¶ Return a hash value for this string.
- Returns
An immutable object that can be used as a hash.
-
get_size(data=None)[source]¶ Return number of bytes this type occupies in a file.
- Returns
Number of bytes.
-
-
uint¶ alias of
pyffi.object_models.common.UInt
-
ulittle32¶ alias of
pyffi.object_models.common.ULittle32
-
ushort¶ alias of
pyffi.object_models.common.UShort
-
static
version_number(version_str)[source]¶ Converts version string into an integer.
- Parameters
version_str (str) – The version string.
- Returns
A version integer.
>>> hex(NifFormat.version_number('3.14.15.29')) '0x30e0f1d' >>> hex(NifFormat.version_number('1.2')) '0x1020000' >>> hex(NifFormat.version_number('3.03')) '0x3000300' >>> hex(NifFormat.version_number('NS')) '0xa010000'
-
versions= {'10.0.1.0': 167772416, '10.0.1.2': 167772418, '10.0.1.3': 167772419, '10.1.0.0': 167837696, '10.1.0.101': 167837797, '10.1.0.106': 167837802, '10.2.0.0': 167903232, '10.2.0.1': 167903233, '10.4.0.1': 168034305, '2.3': 33751040, '20.0.0.4': 335544324, '20.0.0.5': 335544325, '20.1.0.3': 335609859, '20.2.0.7': 335675399, '20.2.0.8': 335675400, '20.3.0.1': 335740929, '20.3.0.2': 335740930, '20.3.0.3': 335740931, '20.3.0.6': 335740934, '20.3.0.9': 335740937, '20.5.0.0': 335872000, '20.6.0.0': 335937536, '20.6.5.0': 335938816, '3.0': 50331648, '3.03': 50332416, '3.1': 50397184, '3.3.0.13': 50528269, '30.0.0.2': 503316482, '30.1.0.3': 503382019, '4.0.0.0': 67108864, '4.0.0.2': 67108866, '4.1.0.12': 67174412, '4.2.0.2': 67239938, '4.2.1.0': 67240192, '4.2.2.0': 67240448}¶
-
xml_alias= []¶
-
xml_bit_struct= [<bit_struct 'BSSegmentFlags'>, <bit_struct 'FurnitureEntryPoints'>, <bit_struct 'BSPartFlag'>, <bit_struct 'BSShaderFlags'>, <bit_struct 'BSShaderFlags2'>, <bit_struct 'SkyrimShaderPropertyFlags1'>, <bit_struct 'SkyrimShaderPropertyFlags2'>, <bit_struct 'SkyrimWaterShaderFlags'>, <bit_struct 'DataStreamAccess'>]¶
-
xml_enum= [<enum 'AlphaFormat'>, <enum 'ApplyMode'>, <enum 'TexType'>, <enum 'KeyType'>, <enum 'LightMode'>, <enum 'OblivionHavokMaterial'>, <enum 'Fallout3HavokMaterial'>, <enum 'SkyrimHavokMaterial'>, <enum 'OblivionLayer'>, <enum 'Fallout3Layer'>, <enum 'SkyrimLayer'>, <enum 'MoppDataBuildType'>, <enum 'MipMapFormat'>, <enum 'PixelFormat'>, <enum 'PixelLayout'>, <enum 'TexClampMode'>, <enum 'TexFilterMode'>, <enum 'VertMode'>, <enum 'CycleType'>, <enum 'FieldType'>, <enum 'BillboardMode'>, <enum 'StencilCompareMode'>, <enum 'ZCompareMode'>, <enum 'StencilAction'>, <enum 'FaceDrawMode'>, <enum 'MotionSystem'>, <enum 'DeactivatorType'>, <enum 'SolverDeactivation'>, <enum 'MotionQuality'>, <enum 'ForceType'>, <enum 'TexTransform'>, <enum 'DecayType'>, <enum 'SymmetryType'>, <enum 'VelocityType'>, <enum 'EmitFrom'>, <enum 'EffectType'>, <enum 'CoordGenType'>, <enum 'EndianType'>, <enum 'TargetColor'>, <enum 'ConsistencyType'>, <enum 'SortingMode'>, <enum 'PropagationMode'>, <enum 'CollisionMode'>, <enum 'BoundVolumeType'>, <enum 'hkResponseType'>, <enum 'BSDismemberBodyPartType'>, <enum 'BSLightingShaderPropertyShaderType'>, <enum 'EffectShaderControlledVariable'>, <enum 'EffectShaderControlledColor'>, <enum 'LightingShaderControlledVariable'>, <enum 'LightingShaderControlledColor'>, <enum 'ExtraVectorsFlags'>, <enum 'hkConstraintType'>, <enum 'AnimationType'>, <enum 'ImageType'>, <enum 'ChannelType'>, <enum 'ChannelConvention'>, <enum 'BSShaderType'>, <enum 'SkyObjectType'>, <enum 'CloningBehavior'>, <enum 'ComponentFormat'>, <enum 'DataStreamUsage'>, <enum 'MeshPrimitiveType'>, <enum 'SyncPoint'>, <enum 'PSLoopBehavior'>]¶
-
xml_file_name= 'nif.xml'¶
-
xml_file_path= [None, '/home/docs/checkouts/readthedocs.org/user_builds/pyffi/checkouts/latest/pyffi/formats/nif/nifxml']¶
-
xml_struct= [<struct 'Color3'>, <struct 'ByteColor3'>, <struct 'Color4'>, <struct 'ByteColor4'>, <struct 'Footer'>, <struct 'LODRange'>, <struct 'MatchGroup'>, <struct 'Vector3'>, <struct 'Vector4'>, <struct 'Quaternion'>, <struct 'QuaternionXYZW'>, <struct 'Matrix22'>, <struct 'Matrix33'>, <struct 'Matrix44'>, <struct 'MipMap'>, <struct 'NodeGroup'>, <struct 'ns keylin'>, <struct 'ns keyarray'>, <struct 'ns keytan'>, <struct 'SkinShape'>, <struct 'SkinShapeGroup'>, <struct 'SkinWeight'>, <struct 'AVObject'>, <struct 'ControllerLink'>, <struct 'ExportInfo'>, <struct 'Header'>, <struct 'StringPalette'>, <struct 'TBC'>, <struct 'Key'>, <struct 'KeyGroup'>, <struct 'ns keytbc'>, <struct 'ns keyvecarray'>, <struct 'ns keyrotsub'>, <struct 'ns keyrotarray'>, <struct 'ns keyvecarraytyp'>, <struct 'QuatKey'>, <struct 'TexCoord'>, <struct 'TexDesc'>, <struct 'ShaderTexDesc'>, <struct 'TexSource'>, <struct 'Triangle'>, <struct 'SkinPartition'>, <struct 'QTransform'>, <struct 'MTransform'>, <struct 'SkinTransform'>, <struct 'BoundingBox'>, <struct 'FurniturePosition'>, <struct 'hkTriangle'>, <struct 'Morph'>, <struct 'Particle'>, <struct 'SkinData'>, <struct 'SphereBV'>, <struct 'HavokColFilter'>, <struct 'HavokMaterial'>, <struct 'OblivionSubShape'>, <struct 'MotorDescriptor'>, <struct 'RagdollDescriptor'>, <struct 'LimitedHingeDescriptor'>, <struct 'HingeDescriptor'>, <struct 'BallAndSocketDescriptor'>, <struct 'PrismaticDescriptor'>, <struct 'StiffSpringDescriptor'>, <struct 'OldSkinData'>, <struct 'MultiTextureElement'>, <struct 'BoxBV'>, <struct 'CapsuleBV'>, <struct 'HalfSpaceBV'>, <struct 'BoundingVolume'>, <struct 'UnionBV'>, <struct 'MorphWeight'>, <struct 'ArkTexture'>, <struct 'InertiaMatrix'>, <struct 'DecalVectorArray'>, <struct 'BodyPartList'>, <struct 'BSSegment'>, <struct 'BoneLOD'>, <struct 'bhkCMSDMaterial'>, <struct 'bhkCMSDBigTris'>, <struct 'bhkCMSDTransform'>, <struct 'bhkCMSDChunk'>, <struct 'SubConstraint'>, <struct 'bhkRDTConstraint'>, <struct 'bhkRDTMalleableConstraint'>, <struct 'NiObject'>, <struct 'Ni3dsAlphaAnimator'>, <struct 'Ni3dsAnimationNode'>, <struct 'Ni3dsColorAnimator'>, <struct 'Ni3dsMorphShape'>, <struct 'Ni3dsParticleSystem'>, <struct 'Ni3dsPathController'>, <struct 'NiParticleModifier'>, <struct 'NiPSysCollider'>, <struct 'bhkRefObject'>, <struct 'bhkSerializable'>, <struct 'bhkWorldObject'>, <struct 'bhkPhantom'>, <struct 'bhkShapePhantom'>, <struct 'bhkSimpleShapePhantom'>, <struct 'bhkEntity'>, <struct 'bhkRigidBody'>, <struct 'bhkRigidBodyT'>, <struct 'bhkConstraint'>, <struct 'bhkLimitedHingeConstraint'>, <struct 'bhkMalleableConstraint'>, <struct 'bhkStiffSpringConstraint'>, <struct 'bhkRagdollConstraint'>, <struct 'bhkPrismaticConstraint'>, <struct 'bhkHingeConstraint'>, <struct 'bhkBallAndSocketConstraint'>, <struct 'bhkBallSocketConstraintChain'>, <struct 'bhkShape'>, <struct 'bhkTransformShape'>, <struct 'bhkSphereRepShape'>, <struct 'bhkConvexShape'>, <struct 'bhkSphereShape'>, <struct 'bhkCapsuleShape'>, <struct 'bhkBoxShape'>, <struct 'bhkConvexVerticesShape'>, <struct 'bhkConvexTransformShape'>, <struct 'bhkMultiSphereShape'>, <struct 'bhkBvTreeShape'>, <struct 'bhkMoppBvTreeShape'>, <struct 'bhkShapeCollection'>, <struct 'bhkListShape'>, <struct 'bhkMeshShape'>, <struct 'bhkPackedNiTriStripsShape'>, <struct 'bhkNiTriStripsShape'>, <struct 'NiExtraData'>, <struct 'NiInterpolator'>, <struct 'NiKeyBasedInterpolator'>, <struct 'NiFloatInterpolator'>, <struct 'NiTransformInterpolator'>, <struct 'NiPoint3Interpolator'>, <struct 'NiPathInterpolator'>, <struct 'NiBoolInterpolator'>, <struct 'NiBoolTimelineInterpolator'>, <struct 'NiBlendInterpolator'>, <struct 'NiBSplineInterpolator'>, <struct 'NiObjectNET'>, <struct 'NiCollisionObject'>, <struct 'NiCollisionData'>, <struct 'bhkNiCollisionObject'>, <struct 'bhkCollisionObject'>, <struct 'bhkBlendCollisionObject'>, <struct 'bhkPCollisionObject'>, <struct 'bhkSPCollisionObject'>, <struct 'NiAVObject'>, <struct 'NiDynamicEffect'>, <struct 'NiLight'>, <struct 'NiProperty'>, <struct 'NiTransparentProperty'>, <struct 'NiPSysModifier'>, <struct 'NiPSysEmitter'>, <struct 'NiPSysVolumeEmitter'>, <struct 'NiTimeController'>, <struct 'NiInterpController'>, <struct 'NiMultiTargetTransformController'>, <struct 'NiGeomMorpherController'>, <struct 'NiMorphController'>, <struct 'NiMorpherController'>, <struct 'NiSingleInterpController'>, <struct 'NiKeyframeController'>, <struct 'NiTransformController'>, <struct 'NiPSysModifierCtlr'>, <struct 'NiPSysEmitterCtlr'>, <struct 'NiPSysModifierBoolCtlr'>, <struct 'NiPSysModifierActiveCtlr'>, <struct 'NiPSysModifierFloatCtlr'>, <struct 'NiPSysEmitterDeclinationCtlr'>, <struct 'NiPSysEmitterDeclinationVarCtlr'>, <struct 'NiPSysEmitterInitialRadiusCtlr'>, <struct 'NiPSysEmitterLifeSpanCtlr'>, <struct 'NiPSysEmitterSpeedCtlr'>, <struct 'NiPSysGravityStrengthCtlr'>, <struct 'NiFloatInterpController'>, <struct 'NiFlipController'>, <struct 'NiAlphaController'>, <struct 'NiTextureTransformController'>, <struct 'NiLightDimmerController'>, <struct 'NiBoolInterpController'>, <struct 'NiVisController'>, <struct 'NiPoint3InterpController'>, <struct 'NiMaterialColorController'>, <struct 'NiLightColorController'>, <struct 'NiExtraDataController'>, <struct 'NiFloatExtraDataController'>, <struct 'NiBoneLODController'>, <struct 'NiBSBoneLODController'>, <struct 'NiGeometry'>, <struct 'NiTriBasedGeom'>, <struct 'NiGeometryData'>, <struct 'AbstractAdditionalGeometryData'>, <struct 'NiTriBasedGeomData'>, <struct 'bhkBlendController'>, <struct 'BSBound'>, <struct 'BSFurnitureMarker'>, <struct 'BSParentVelocityModifier'>, <struct 'BSPSysArrayEmitter'>, <struct 'BSWindModifier'>, <struct 'hkPackedNiTriStripsData'>, <struct 'NiAlphaProperty'>, <struct 'NiAmbientLight'>, <struct 'NiParticlesData'>, <struct 'NiRotatingParticlesData'>, <struct 'NiAutoNormalParticlesData'>, <struct 'ParticleDesc'>, <struct 'NiPSysData'>, <struct 'NiMeshPSysData'>, <struct 'NiBinaryExtraData'>, <struct 'NiBinaryVoxelExtraData'>, <struct 'NiBinaryVoxelData'>, <struct 'NiBlendBoolInterpolator'>, <struct 'NiBlendFloatInterpolator'>, <struct 'NiBlendPoint3Interpolator'>, <struct 'NiBlendTransformInterpolator'>, <struct 'NiBoolData'>, <struct 'NiBooleanExtraData'>, <struct 'NiBSplineBasisData'>, <struct 'NiBSplineFloatInterpolator'>, <struct 'NiBSplineCompFloatInterpolator'>, <struct 'NiBSplinePoint3Interpolator'>, <struct 'NiBSplineCompPoint3Interpolator'>, <struct 'NiBSplineTransformInterpolator'>, <struct 'NiBSplineCompTransformInterpolator'>, <struct 'BSRotAccumTransfInterpolator'>, <struct 'NiBSplineData'>, <struct 'NiCamera'>, <struct 'NiColorData'>, <struct 'NiColorExtraData'>, <struct 'NiControllerManager'>, <struct 'NiSequence'>, <struct 'NiControllerSequence'>, <struct 'NiAVObjectPalette'>, <struct 'NiDefaultAVObjectPalette'>, <struct 'NiDirectionalLight'>, <struct 'NiDitherProperty'>, <struct 'NiRollController'>, <struct 'NiFloatData'>, <struct 'NiFloatExtraData'>, <struct 'NiFloatsExtraData'>, <struct 'NiFogProperty'>, <struct 'NiGravity'>, <struct 'NiIntegerExtraData'>, <struct 'BSXFlags'>, <struct 'NiIntegersExtraData'>, <struct 'BSKeyframeController'>, <struct 'NiKeyframeData'>, <struct 'NiLookAtController'>, <struct 'NiLookAtInterpolator'>, <struct 'NiMaterialProperty'>, <struct 'NiMorphData'>, <struct 'NiNode'>, <struct 'NiBone'>, <struct 'AvoidNode'>, <struct 'FxWidget'>, <struct 'FxButton'>, <struct 'FxRadioButton'>, <struct 'NiBillboardNode'>, <struct 'NiBSAnimationNode'>, <struct 'NiBSParticleNode'>, <struct 'NiSwitchNode'>, <struct 'NiLODNode'>, <struct 'NiPalette'>, <struct 'NiParticleBomb'>, <struct 'NiParticleColorModifier'>, <struct 'NiParticleGrowFade'>, <struct 'NiParticleMeshModifier'>, <struct 'NiParticleRotation'>, <struct 'NiParticles'>, <struct 'NiAutoNormalParticles'>, <struct 'NiParticleMeshes'>, <struct 'NiParticleMeshesData'>, <struct 'NiParticleSystem'>, <struct 'NiMeshParticleSystem'>, <struct 'NiParticleSystemController'>, <struct 'NiBSPArrayController'>, <struct 'NiPathController'>, <struct 'ChannelData'>, <struct 'ATextureRenderData'>, <struct 'NiPersistentSrcTextureRendererData'>, <struct 'NiPixelData'>, <struct 'NiPlanarCollider'>, <struct 'NiPointLight'>, <struct 'NiPosData'>, <struct 'NiPSysAgeDeathModifier'>, <struct 'NiPSysBombModifier'>, <struct 'NiPSysBoundUpdateModifier'>, <struct 'NiPSysBoxEmitter'>, <struct 'NiPSysColliderManager'>, <struct 'NiPSysColorModifier'>, <struct 'NiPSysCylinderEmitter'>, <struct 'NiPSysDragModifier'>, <struct 'NiPSysEmitterCtlrData'>, <struct 'NiPSysGravityModifier'>, <struct 'NiPSysGrowFadeModifier'>, <struct 'NiPSysMeshEmitter'>, <struct 'NiPSysMeshUpdateModifier'>, <struct 'BSPSysInheritVelocityModifier'>, <struct 'BSPSysHavokUpdateModifier'>, <struct 'BSPSysRecycleBoundModifier'>, <struct 'BSPSysSubTexModifier'>, <struct 'NiPSysPlanarCollider'>, <struct 'NiPSysSphericalCollider'>, <struct 'NiPSysPositionModifier'>, <struct 'NiPSysResetOnLoopCtlr'>, <struct 'NiPSysRotationModifier'>, <struct 'NiPSysSpawnModifier'>, <struct 'NiPSysSphereEmitter'>, <struct 'NiPSysUpdateCtlr'>, <struct 'NiPSysFieldModifier'>, <struct 'NiPSysVortexFieldModifier'>, <struct 'NiPSysGravityFieldModifier'>, <struct 'NiPSysDragFieldModifier'>, <struct 'NiPSysTurbulenceFieldModifier'>, <struct 'BSPSysLODModifier'>, <struct 'BSPSysScaleModifier'>, <struct 'NiPSysFieldMagnitudeCtlr'>, <struct 'NiPSysFieldAttenuationCtlr'>, <struct 'NiPSysFieldMaxDistanceCtlr'>, <struct 'NiPSysAirFieldAirFrictionCtlr'>, <struct 'NiPSysAirFieldInheritVelocityCtlr'>, <struct 'NiPSysAirFieldSpreadCtlr'>, <struct 'NiPSysInitialRotSpeedCtlr'>, <struct 'NiPSysInitialRotSpeedVarCtlr'>, <struct 'NiPSysInitialRotAngleCtlr'>, <struct 'NiPSysInitialRotAngleVarCtlr'>, <struct 'NiPSysEmitterPlanarAngleCtlr'>, <struct 'NiPSysEmitterPlanarAngleVarCtlr'>, <struct 'NiPSysAirFieldModifier'>, <struct 'NiPSysTrailEmitter'>, <struct 'NiLightIntensityController'>, <struct 'NiPSysRadialFieldModifier'>, <struct 'NiLODData'>, <struct 'NiRangeLODData'>, <struct 'NiScreenLODData'>, <struct 'NiRotatingParticles'>, <struct 'NiSequenceStreamHelper'>, <struct 'NiShadeProperty'>, <struct 'NiSkinData'>, <struct 'NiSkinInstance'>, <struct 'NiTriShapeSkinController'>, <struct 'NiClodSkinInstance'>, <struct 'NiSkinPartition'>, <struct 'NiTexture'>, <struct 'NiSourceTexture'>, <struct 'NiSpecularProperty'>, <struct 'NiSphericalCollider'>, <struct 'NiSpotLight'>, <struct 'NiStencilProperty'>, <struct 'NiStringExtraData'>, <struct 'NiStringPalette'>, <struct 'NiStringsExtraData'>, <struct 'NiTextKeyExtraData'>, <struct 'NiTextureEffect'>, <struct 'NiTextureModeProperty'>, <struct 'NiImage'>, <struct 'NiTextureProperty'>, <struct 'NiMultiTextureProperty'>, <struct 'NiTexturingProperty'>, <struct 'NiTransformData'>, <struct 'NiTriShape'>, <struct 'NiTriShapeData'>, <struct 'NiTriStrips'>, <struct 'NiTriStripsData'>, <struct 'NiEnvMappedTriShape'>, <struct 'NiEnvMappedTriShapeData'>, <struct 'NiBezierTriangle4'>, <struct 'NiBezierMesh'>, <struct 'NiClod'>, <struct 'NiClodData'>, <struct 'NiUVController'>, <struct 'NiUVData'>, <struct 'NiVectorExtraData'>, <struct 'NiVertexColorProperty'>, <struct 'NiVertWeightsExtraData'>, <struct 'NiVisData'>, <struct 'NiWireframeProperty'>, <struct 'NiZBufferProperty'>, <struct 'RootCollisionNode'>, <struct 'NiRawImageData'>, <struct 'NiSortAdjustNode'>, <struct 'NiSourceCubeMap'>, <struct 'NiPhysXProp'>, <struct 'physXMaterialRef'>, <struct 'NiPhysXPropDesc'>, <struct 'NiPhysXActorDesc'>, <struct 'NiPhysXBodyDesc'>, <struct 'NiPhysXD6JointDesc'>, <struct 'NiPhysXShapeDesc'>, <struct 'NiPhysXMeshDesc'>, <struct 'NiPhysXMaterialDesc'>, <struct 'NiPhysXKinematicSrc'>, <struct 'NiPhysXTransformDest'>, <struct 'NiArkAnimationExtraData'>, <struct 'NiArkImporterExtraData'>, <struct 'NiArkTextureExtraData'>, <struct 'NiArkViewportInfoExtraData'>, <struct 'NiArkShaderExtraData'>, <struct 'NiLines'>, <struct 'NiLinesData'>, <struct 'Polygon'>, <struct 'NiScreenElementsData'>, <struct 'NiScreenElements'>, <struct 'NiRoomGroup'>, <struct 'NiRoom'>, <struct 'NiPortal'>, <struct 'BSFadeNode'>, <struct 'BSShaderProperty'>, <struct 'BSShaderLightingProperty'>, <struct 'BSShaderNoLightingProperty'>, <struct 'BSShaderPPLightingProperty'>, <struct 'BSEffectShaderPropertyFloatController'>, <struct 'BSEffectShaderPropertyColorController'>, <struct 'BSLightingShaderPropertyFloatController'>, <struct 'BSLightingShaderPropertyColorController'>, <struct 'BSNiAlphaPropertyTestRefController'>, <struct 'BSProceduralLightningController'>, <struct 'BSShaderTextureSet'>, <struct 'WaterShaderProperty'>, <struct 'SkyShaderProperty'>, <struct 'TileShaderProperty'>, <struct 'DistantLODShaderProperty'>, <struct 'BSDistantTreeShaderProperty'>, <struct 'TallGrassShaderProperty'>, <struct 'VolumetricFogShaderProperty'>, <struct 'HairShaderProperty'>, <struct 'Lighting30ShaderProperty'>, <struct 'BSLightingShaderProperty'>, <struct 'BSEffectShaderProperty'>, <struct 'BSWaterShaderProperty'>, <struct 'BSSkyShaderProperty'>, <struct 'BSDismemberSkinInstance'>, <struct 'BSDecalPlacementVectorExtraData'>, <struct 'BSPSysSimpleColorModifier'>, <struct 'BSValueNode'>, <struct 'BSStripParticleSystem'>, <struct 'BSStripPSysData'>, <struct 'BSPSysStripUpdateModifier'>, <struct 'BSMaterialEmittanceMultController'>, <struct 'BSMasterParticleSystem'>, <struct 'BSPSysMultiTargetEmitterCtlr'>, <struct 'BSRefractionStrengthController'>, <struct 'BSOrderedNode'>, <struct 'BSBlastNode'>, <struct 'BSDamageStage'>, <struct 'BSRefractionFirePeriodController'>, <struct 'bhkConvexListShape'>, <struct 'BSTreadTransformData'>, <struct 'BSTreadTransform'>, <struct 'BSTreadTransfInterpolator'>, <struct 'BSAnimNotes'>, <struct 'bhkLiquidAction'>, <struct 'BSMultiBoundNode'>, <struct 'BSMultiBound'>, <struct 'BSMultiBoundData'>, <struct 'BSMultiBoundOBB'>, <struct 'BSMultiBoundSphere'>, <struct 'BSSegmentedTriShape'>, <struct 'BSMultiBoundAABB'>, <struct 'AdditionalDataInfo'>, <struct 'AdditionalDataBlock'>, <struct 'BSPackedAdditionalDataBlock'>, <struct 'NiAdditionalGeometryData'>, <struct 'BSPackedAdditionalGeometryData'>, <struct 'BSWArray'>, <struct 'bhkAabbPhantom'>, <struct 'BSFrustumFOVController'>, <struct 'BSDebrisNode'>, <struct 'bhkBreakableConstraint'>, <struct 'bhkOrientHingedBodyAction'>, <struct 'bhkRagdollTemplate'>, <struct 'bhkRagdollTemplateData'>, <struct 'Region'>, <struct 'NiDataStream'>, <struct 'SemanticData'>, <struct 'MeshData'>, <struct 'MaterialData'>, <struct 'NiRenderObject'>, <struct 'NiMeshModifier'>, <struct 'ExtraMeshDataEpicMickey'>, <struct 'ExtraMeshDataEpicMickey2'>, <struct 'NiMesh'>, <struct 'NiMorphWeightsController'>, <struct 'ElementReference'>, <struct 'NiMorphMeshModifier'>, <struct 'NiSkinningMeshModifier'>, <struct 'NiInstancingMeshModifier'>, <struct 'NiSkinningLODController'>, <struct 'NiPSParticleSystem'>, <struct 'NiPSMeshParticleSystem'>, <struct 'NiPSEmitParticlesCtlr'>, <struct 'NiPSForceActiveCtlr'>, <struct 'NiPSSimulator'>, <struct 'NiPSSimulatorStep'>, <struct 'NiPSSimulatorGeneralStep'>, <struct 'NiPSSimulatorForcesStep'>, <struct 'NiPSSimulatorCollidersStep'>, <struct 'NiPSSimulatorMeshAlignStep'>, <struct 'NiPSSimulatorFinalStep'>, <struct 'NiPSFacingQuadGenerator'>, <struct 'NiShadowGenerator'>, <struct 'NiPSBoundUpdater'>, <struct 'NiPSDragForce'>, <struct 'NiPSGravityForce'>, <struct 'NiPSBoxEmitter'>, <struct 'NiPSMeshEmitter'>, <struct 'NiPSGravityStrengthCtlr'>, <struct 'NiPSPlanarCollider'>, <struct 'NiPSEmitterSpeedCtlr'>, <struct 'NiPSEmitterRadiusCtlr'>, <struct 'NiPSResetOnLoopCtlr'>, <struct 'NiPSSphereEmitter'>, <struct 'NiPSCylinderEmitter'>, <struct 'NiPSEmitterDeclinationCtlr'>, <struct 'NiPSEmitterDeclinationVarCtlr'>, <struct 'NiPSEmitterPlanarAngleCtlr'>, <struct 'NiPSEmitterPlanarAngleVarCtlr'>, <struct 'NiPSEmitterRotAngleCtlr'>, <struct 'NiPSEmitterRotAngleVarCtlr'>, <struct 'NiPSEmitterRotSpeedCtlr'>, <struct 'NiPSEmitterRotSpeedVarCtlr'>, <struct 'NiPSEmitterLifeSpanCtlr'>, <struct 'NiPSBombForce'>, <struct 'NiPSSphericalCollider'>, <struct 'NiPSSpawner'>, <struct 'NiSequenceData'>, <struct 'NiTransformEvaluator'>, <struct 'NiBSplineCompTransformEvaluator'>, <struct 'NiMeshHWInstance'>, <struct 'NiFurSpringController'>, <struct 'CStreamableAssetData'>, <struct 'bhkCompressedMeshShape'>, <struct 'bhkCompressedMeshShapeData'>, <struct 'BSInvMarker'>, <struct 'BSBoneLODExtraData'>, <struct 'BSBehaviorGraphExtraData'>, <struct 'BSLagBoneController'>, <struct 'BSLODTriShape'>, <struct 'BSFurnitureMarkerNode'>, <struct 'BSLeafAnimNode'>, <struct 'BSTreeNode'>]¶
-
Regression tests¶
These tests are used to check for functionality and bugs in the library. They also provide code examples which you may find useful.
Read a NIF file¶
>>> from os.path import dirname
>>> dirpath = __file__
>>> for i in range(4): #recurse up to root repo dir
... dirpath = dirname(dirpath)
>>> repo_root = dirpath
>>> format_root = os.path.join(repo_root, 'tests', 'spells', 'nif', 'files')
>>> stream = open(os.path.join(format_root, 'test.nif'), 'rb')
>>> data = NifFormat.Data()
>>> # inspect is optional; it will not read the actual blocks
>>> data.inspect(stream)
>>> hex(data.version)
'0x14010003'
>>> data.user_version
0
>>> for blocktype in data.header.block_types:
... print(blocktype.decode("ascii"))
NiNode
NiTriShape
NiTriShapeData
>>> data.roots # blocks have not been read yet, so this is an empty list
[]
>>> data.read(stream)
>>> for root in data.roots:
... for block in root.tree():
... if isinstance(block, NifFormat.NiNode):
... print(block.name.decode("ascii"))
test
>>> stream.close()
Parse all NIF files in a directory tree¶
>>> for stream, data in NifFormat.walkData(format_root):
... try:
... # the replace call makes the doctest also pass on windows
... os_path = stream.name
... split = (os_path.split(os.sep))[-5:]
... rejoin = os.path.join(*split).replace(os.sep, "/")
... print("reading %s" % rejoin)
... data.read(stream)
... except Exception:
... print(
... "Warning: read failed due corrupt file,"
... " corrupt format description, or bug.")
reading tests/spells/nif/files/invalid.nif
Warning: read failed due corrupt file, corrupt format description, or bug.
reading tests/spells/nif/files/nds.nif
reading tests/spells/nif/files/neosteam.nif
reading tests/spells/nif/files/test.nif
reading tests/spells/nif/files/test_centerradius.nif
reading tests/spells/nif/files/test_check_tangentspace1.nif
reading tests/spells/nif/files/test_check_tangentspace2.nif
reading tests/spells/nif/files/test_check_tangentspace3.nif
reading tests/spells/nif/files/test_check_tangentspace4.nif
reading tests/spells/nif/files/test_convexverticesshape.nif
reading tests/spells/nif/files/test_dump_tex.nif
reading tests/spells/nif/files/test_fix_clampmaterialalpha.nif
reading tests/spells/nif/files/test_fix_cleanstringpalette.nif
reading tests/spells/nif/files/test_fix_detachhavoktristripsdata.nif
reading tests/spells/nif/files/test_fix_disableparallax.nif
reading tests/spells/nif/files/test_fix_ffvt3rskinpartition.nif
reading tests/spells/nif/files/test_fix_mergeskeletonroots.nif
reading tests/spells/nif/files/test_fix_tangentspace.nif
reading tests/spells/nif/files/test_fix_texturepath.nif
reading tests/spells/nif/files/test_grid_128x128.nif
reading tests/spells/nif/files/test_grid_64x64.nif
reading tests/spells/nif/files/test_mopp.nif
reading tests/spells/nif/files/test_opt_collision_complex_mopp.nif
reading tests/spells/nif/files/test_opt_collision_mopp.nif
reading tests/spells/nif/files/test_opt_collision_packed.nif
reading tests/spells/nif/files/test_opt_collision_to_boxshape.nif
reading tests/spells/nif/files/test_opt_collision_to_boxshape_notabox.nif
reading tests/spells/nif/files/test_opt_collision_unpacked.nif
reading tests/spells/nif/files/test_opt_delunusedbones.nif
reading tests/spells/nif/files/test_opt_dupverts.nif reading tests/spells/nif/files/test_opt_emptyproperties.nif reading tests/spells/nif/files/test_opt_grid_layout.nif reading tests/spells/nif/files/test_opt_mergeduplicates.nif reading tests/spells/nif/files/test_opt_vertex_cache.nif reading tests/spells/nif/files/test_opt_zeroscale.nif reading tests/spells/nif/files/test_skincenterradius.nif reading tests/spells/nif/files/test_vertexcolor.nif
Create a NIF model from scratch and write to file¶
>>> root = NifFormat.NiNode()
>>> root.name = 'Scene Root'
>>> blk = NifFormat.NiNode()
>>> root.add_child(blk)
>>> blk.name = 'new block'
>>> blk.scale = 2.4
>>> blk.translation.x = 3.9
>>> blk.rotation.m_11 = 1.0
>>> blk.rotation.m_22 = 1.0
>>> blk.rotation.m_33 = 1.0
>>> ctrl = NifFormat.NiVisController()
>>> ctrl.flags = 0x000c
>>> ctrl.target = blk
>>> blk.add_controller(ctrl)
>>> blk.add_controller(NifFormat.NiAlphaController())
>>> strips = NifFormat.NiTriStrips()
>>> root.add_child(strips, front = True)
>>> strips.name = "hello world"
>>> strips.rotation.m_11 = 1.0
>>> strips.rotation.m_22 = 1.0
>>> strips.rotation.m_33 = 1.0
>>> data = NifFormat.NiTriStripsData()
>>> strips.data = data
>>> data.num_vertices = 5
>>> data.has_vertices = True
>>> data.vertices.update_size()
>>> for i, v in enumerate(data.vertices):
... v.x = 1.0+i/10.0
... v.y = 0.2+1.0/(i+1)
... v.z = 0.03
>>> data.update_center_radius()
>>> data.num_strips = 2
>>> data.strip_lengths.update_size()
>>> data.strip_lengths[0] = 3
>>> data.strip_lengths[1] = 4
>>> data.has_points = True
>>> data.points.update_size()
>>> data.points[0][0] = 0
>>> data.points[0][1] = 1
>>> data.points[0][2] = 2
>>> data.points[1][0] = 1
>>> data.points[1][1] = 2
>>> data.points[1][2] = 3
>>> data.points[1][3] = 4
>>> data.num_uv_sets = 1
>>> data.has_uv = True
>>> data.uv_sets.update_size()
>>> for i, v in enumerate(data.uv_sets[0]):
... v.u = 1.0-i/10.0
... v.v = 1.0/(i+1)
>>> data.has_normals = True
>>> data.normals.update_size()
>>> for i, v in enumerate(data.normals):
... v.x = 0.0
... v.y = 0.0
... v.z = 1.0
>>> strips.update_tangent_space()
>>> from tempfile import TemporaryFile
>>> stream = TemporaryFile()
>>> nifdata = NifFormat.Data(version=0x14010003, user_version=10)
>>> nifdata.roots = [root]
>>> nifdata.write(stream)
>>> stream.close()
Get list of versions and games¶
>>> for vnum in sorted(NifFormat.versions.values()):
... print('0x%08X' % vnum)
0x02030000
0x03000000
0x03000300
0x03010000
0x0303000D
0x04000000
0x04000002
0x0401000C
0x04020002
0x04020100
0x04020200
0x0A000100
0x0A000102
0x0A000103
0x0A010000
0x0A010065
0x0A01006A
0x0A020000
0x0A020001
0x0A040001
0x14000004
0x14000005
0x14010003
0x14020007
0x14020008
0x14030001
0x14030002
0x14030003
0x14030006
0x14030009
0x14050000
0x14060000
0x14060500
0x1E000002
0x1E010003
>>> for game, versions in sorted(NifFormat.games.items(), key=lambda x: x[0]):
... print("%s " % game + " ".join('0x%08X' % vnum for vnum in versions))
? 0x0A000103
Atlantica 0x14020008
Axis and Allies 0x0A010000
Bully SE 0x14030009
Civilization IV 0x04020002 0x04020100 0x04020200 0x0A000100 0x0A010000 0x0A020000 0x14000004
Culpa Innata 0x04020200
Dark Age of Camelot 0x02030000 0x03000300 0x03010000 0x0401000C 0x04020100 0x04020200 0x0A010000
Divinity 2 0x14030009
Emerge 0x14020007 0x14020008 0x14030001 0x14030002 0x14030003 0x14030006 0x1E000002
Empire Earth II 0x04020200 0x0A010000
Empire Earth III 0x14020007 0x14020008
Entropia Universe 0x0A010000
Epic Mickey 0x14060500
Fallout 3 0x14020007
Freedom Force 0x04000000 0x04000002
Freedom Force vs. the 3rd Reich 0x0A010000
Howling Sword 0x14030009
Kohan 2 0x0A010000
KrazyRain 0x14050000 0x14060000
Lazeska 0x14030009
Loki 0x0A020000
Megami Tensei: Imagine 0x14010003
Morrowind 0x04000002
NeoSteam 0x0A010000
Oblivion 0x0303000D 0x0A000100 0x0A000102 0x0A010065 0x0A01006A 0x0A020000 0x14000004 0x14000005
Prison Tycoon 0x0A020000
Pro Cycling Manager 0x0A020000
Red Ocean 0x0A020000
Rocksmith 0x1E010003
Rocksmith 2014 0x1E010003
Sid Meier's Railroads 0x14000004
Skyrim 0x14020007
Star Trek: Bridge Commander 0x03000000 0x03010000
The Guild 2 0x0A010000
Warhammer 0x14030009
Wildlife Park 2 0x0A010000 0x0A020000
Worldshift 0x0A020001 0x0A040001
Zoo Tycoon 2 0x0A000100
Reading an unsupported NIF file¶
>>> file = os.path.join(format_root, 'invalid.nif')
>>> stream = open(file, 'rb')
>>> data = NifFormat.Data()
>>> data.inspect(stream) # the file seems ok on inspection
>>> data.read(stream)
Traceback (most recent call last):
...
ValueError: ...
>>> stream.close()
Template types¶
>>> block = NifFormat.NiTextKeyExtraData()
>>> block.num_text_keys = 1
>>> block.text_keys.update_size()
>>> block.text_keys[0].time = 1.0
>>> block.text_keys[0].value = 'hi'
Links¶
>>> NifFormat.NiNode._has_links
True
>>> NifFormat.NiBone._has_links
True
>>> skelroot = NifFormat.NiNode()
>>> geom = NifFormat.NiTriShape()
>>> geom.skin_instance = NifFormat.NiSkinInstance()
>>> geom.skin_instance.skeleton_root = skelroot
>>> [block.__class__.__name__ for block in geom.get_refs()]
['NiSkinInstance']
>>> [block.__class__.__name__ for block in geom.get_links()]
['NiSkinInstance']
>>> [block.__class__.__name__ for block in geom.skin_instance.get_refs()]
[]
>>> [block.__class__.__name__ for block in geom.skin_instance.get_links()]
['NiNode']
Strings¶
>>> extra = NifFormat.NiTextKeyExtraData()
>>> extra.num_text_keys = 2
>>> extra.text_keys.update_size()
>>> extra.text_keys[0].time = 0.0
>>> extra.text_keys[0].value = "start"
>>> extra.text_keys[1].time = 2.0
>>> extra.text_keys[1].value = "end"
>>> for extrastr in extra.get_strings(None):
... print(extrastr.decode("ascii"))
start
end