rollnw.model

class rollnw.model.Mdl

Implementation of ASCII Mdl file format

static from_file(path)

Loads mdl file from file path

model: MdlModel

The parsed model

valid()

Determines if file was successfully parsed

class rollnw.model.MdlAABBEntry

AABB Entry

bmax: Vector3
bmin: Vector3
leaf_face: int
plane: int
class rollnw.model.MdlAABBNode

AABB model node

entries: List[MdlAABBEntry]
class rollnw.model.MdlAnimation

Class containing model animation

anim_root: str
events: List[MdlAnimationEvent]
length: float
transition_time: float
class rollnw.model.MdlAnimationEvent

Animation Event

name: str
time: float
class rollnw.model.MdlAnimeshNode

Animated mesh node

animtverts: List[Vector3]
animverts: List[Vector3]
sampleperiod: float
class rollnw.model.MdlCameraNode

Camera node

enum rollnw.model.MdlClassification(value)

Model classes

Member Type:

int

Valid values are as follows:

invalid = <MdlClassification.invalid: 1>
effect = <MdlClassification.effect: 2>
tile = <MdlClassification.tile: 3>
character = <MdlClassification.character: 4>
door = <MdlClassification.door: 5>
item = <MdlClassification.item: 6>
gui = <MdlClassification.gui: 7>
class rollnw.model.MdlControllerKey

Model controller

columns: int
data_offset: int
is_key: bool
key_offset: int
name: str
rows: int
time_offset: int
type: int
class rollnw.model.MdlControllerType

Controller types

alpha: ClassVar[int]
alpha_end: ClassVar[int]
alpha_mid: ClassVar[int]
alpha_start: ClassVar[int]
birthrate: ClassVar[int]
blur_length: ClassVar[int]
bounce_co: ClassVar[int]
color: ClassVar[int]
color_end: ClassVar[int]
color_mid: ClassVar[int]
color_start: ClassVar[int]
combine_time: ClassVar[int]
detonate: ClassVar[int]
drag: ClassVar[int]
fps: ClassVar[int]
frame_end: ClassVar[int]
frame_start: ClassVar[int]
grav: ClassVar[int]
life_exp: ClassVar[int]
lightning_delay: ClassVar[int]
lightning_radius: ClassVar[int]
lightning_scale: ClassVar[int]
lightning_subdiv: ClassVar[int]
mass: ClassVar[int]
multiplier: ClassVar[int]
orientation: ClassVar[int]
p2p_bezier2: ClassVar[int]
p2p_bezier3: ClassVar[int]
particle_rot: ClassVar[int]
percent_end: ClassVar[int]
percent_mid: ClassVar[int]
percent_start: ClassVar[int]
position: ClassVar[int]
radius: ClassVar[int]
rand_vel: ClassVar[int]
scale: ClassVar[int]
self_illum_color: ClassVar[int]
shadow_radius: ClassVar[int]
size_end: ClassVar[int]
size_end_y: ClassVar[int]
size_mid: ClassVar[int]
size_mid_y: ClassVar[int]
size_start: ClassVar[int]
size_start_y: ClassVar[int]
spread: ClassVar[int]
threshold: ClassVar[int]
velocity: ClassVar[int]
vertical_displacement: ClassVar[int]
wirecolor: ClassVar[int]
xsize: ClassVar[int]
ysize: ClassVar[int]
class rollnw.model.MdlDanglymeshNode
constraints: List[float]
displacement: float
period: float
tightness: float
class rollnw.model.MdlDummyNode

Dummy node

class rollnw.model.MdlEmitterNode

Emitter node

blastlength: float
blastradius: float
blend: str
blend_sel: int
chunkname: str
deadspace: float
flags: int
loop: int
opacity: float
p2p_type: str
render: str
render_sel: int
renderorder: int
spawntype: int
spawntype_sel: int
texture: str
twosidedtex: int
update: str
update_sel: int
xgrid: int
ygrid: int
class rollnw.model.MdlFace

Model face

material_idx: int
shader_group_idx: int
tvert_idx: List[int]
vert_idx: List[int]
class rollnw.model.MdlGeometry

Class containing model geometry

name: str
type: int
enum rollnw.model.MdlGeometryFlag(value)

Geometry flags

Member Type:

int

Valid values are as follows:

geometry = <MdlGeometryFlag.geometry: 1>
model = <MdlGeometryFlag.model: 2>
animation = <MdlGeometryFlag.animation: 3>
binary = <MdlGeometryFlag.binary: 4>
enum rollnw.model.MdlGeometryType(value)

Geometry types

Member Type:

int

Valid values are as follows:

geometry = <MdlGeometryType.geometry: 1>
model = <MdlGeometryType.model: 2>
animation = <MdlGeometryType.animation: 3>
class rollnw.model.MdlLightNode

Light node

affectdynamic: int
ambientonly: int
color: Vector3
dynamic: bool
fadinglight: int
flarecolorshifts: List[Vector3]
flarepositions: List[float]
flareradius: float
flaresizes: List[float]
generateflare: int
lensflares: float
lightpriority: int
multiplier: float
shadow: int
textures: List[str]
class rollnw.model.MdlModel

A parsed model

animation_count()

Gets the number of animations

animations()

Gets an iterator of animations

animationscale: float
bmax: Vector3
bmin: Vector3
classification: int
file_dependency: str
get_animation(index: int)

Gets an animation

ignorefog: bool
radius: float
supermodel: Mdl | None
supermodel_name: str
class rollnw.model.MdlNode

Base Model Node

children: List[MdlNode]
get_controller(type: int, is_key: bool) Tuple[MdlControllerKey, List[float], List[float]]

Gets a controller key and times and key data

Note

If not an animation, time will be empty

inheritcolor: bool
name: str
parent: MdlNode
type: int
class rollnw.model.MdlNodeFlags

Model node flags

aabb: ClassVar[int]
anim: ClassVar[int]
camera: ClassVar[int]
dangly: ClassVar[int]
emitter: ClassVar[int]
header: ClassVar[int]
light: ClassVar[int]
mesh: ClassVar[int]
patch: ClassVar[int]
reference: ClassVar[int]
skin: ClassVar[int]
class rollnw.model.MdlNodeType

Model node types

aabb: ClassVar[int]
animmesh: ClassVar[int]
camera: ClassVar[int]
danglymesh: ClassVar[int]
dummy: ClassVar[int]
emitter: ClassVar[int]
light: ClassVar[int]
patch: ClassVar[int]
reference: ClassVar[int]
skin: ClassVar[int]
trimesh: ClassVar[int]
class rollnw.model.MdlPatchNode

Patch node

class rollnw.model.MdlReferenceNode

Reference node

reattachable: bool
refmodel: str
class rollnw.model.MdlSkinNode

Skin mesh node

vertices: List[SkinVertex]

List of vertex positions, texcoords, normals, tangents

enum rollnw.model.MdlTriangleMode(value)

Triangle mode

Member Type:

int

Valid values are as follows:

triangle = <MdlTriangleMode.triangle: 1>
triangle_strip = <MdlTriangleMode.triangle_strip: 2>
class rollnw.model.MdlTrimeshNode

Trimesh Node

ambient: Vector3
beaming: bool
bitmap: str
bmax: Vector3
bmin: Vector3
center: Vector3
diffuse: Vector3
displtype: int
indices: List[int]

List of vertex indices

lightmapped: int
materialname: str
multimaterial: List[str]
render: bool
renderhint: str
rotatetexture: bool
shadow: bool
shininess: float
showdispl: bool
specular: Vector3
textures: List[str]
tilefade: int
transparencyhint: int
vertices: List[Vertex]

List of vertex positions, texcoords, normals, tangents

class rollnw.model.ModelEmitterFlag

Emitter flags

affected_by_wind: ClassVar[int]
bounce: ClassVar[int]
inherit: ClassVar[int]
inherit_local: ClassVar[int]
inherit_part: ClassVar[int]
inherit_vel: ClassVar[int]
is_tinted: ClassVar[int]
p2p: ClassVar[int]
p2p_sel: ClassVar[int]
random: ClassVar[int]
splat: ClassVar[int]
class rollnw.model.SkinVertex

Skin Vertex data

bones: IVector4
normal: Vector3
position: Vector3
tangent: Vector4
tex_coords: Vector2
weights: Vector4
class rollnw.model.Vertex

Vertex data

normal: Vector3
position: Vector3
tangent: Vector3
tex_coords: Vector2