prevnext   » SZS: Wiimms SZS Toolset » wkmpt: Wiimms KMP Tool » wkmpt draw

wkmpt draw

Read the entered KMP files (text or binary), of needed load the related KCL file, draw KMP objects and create an OBJ file. The default destination is '%P/%N.kmp.obj'.

Automated dropping of bad KCL triangles is enabled if no drop option is specified by option --kcl.

Contents

1.   Syntax

wkmpt DRAW source...

2.   Options

Options
Option Param Description
-w --draw list The parameter is a comma separated list of keywords to select the elements to draw. Allowed keywords are: CKPT, CJGPT, JGPT, KTPT, ENPT, ITPT, POTI, CNPT, ITEMBOXES, ROADOBJECTS, SOLIDOBJECTS, DECORATION, KCL, NONE and ALL (default); the classes POINTS, OBJECTS and RESPAWN; the presence-flag selectors [1-3]OFFLINE and [1-3]ONLINE; the special options DETAILED and WARNINGS. If a keyword is prefixed by a minus sign, the option is disabled. Option KCL decides, if the reference KCL is included in the output. If DETAILED is disabled, an output with less faces is created. If WARNINGS is enabled, some objects are drawn in red.
--pos-mode list Define a comma separated list of modes for the next --pos-file options. Each element of the list begins with a keyword followed by a column index and/or a parameter list: X<col>, Y<col>, Z<col>, D<col>, C<num>, T<num>, FA<col>=<str>, FB<col>=<str>, FC<col>=<str>, <COLOR>
--pos-file file Load a position file created by mkw-ana and print the positions into the map. Define the modes first, because the last defined modes set by --pos-mode are used!
--png pix_size ['a' align] ['x' x1[:x2]] ['y' y1[:y2]] ['t' types] Draw a PNG with a top view of the track instead of an OBJ file. Transformations are done after the KMP 3D drawing, but before PNG creation.

'pix_size' is the number of world units (sqare) used for 1 PNG pixel. 'align' is a factor as anti-aliasing pixel multiplicator (>1 is on). 'x' and 'y' defines the part of the world that is displayed. If not set, the check points (KMP/CKPT) are used to find a good area. 't' is a bit field with 32 bits to enable the the KCL types. Each bit corresponds to one of the KCL types and only . The default is to display all but not walls and solid fall (0x7fef0bff).

All numeric values can be any expression allowed by the parser.

-d --dest path Define a destination path (directory/file). The destination - means: write to standard output.

The path may contain escape sequences: %Q is replaced by the fully qualified source name. %P and %F are replaced by the source path or by the filename. %N and %E are replaced by source filename without extension or by the source extension. Finally, %T is replaced by the default extension of the destination format.

A '?' direct behind '%' in %E and %T conversions avoid that the same extension is used twice in row.

-D --DEST path Like --dest, but create the directory path automatically.
-E --esc char Define an alternative escape character for destination files. The default is '%'. For Windows batch files it is a good choice to set '-E$'.
-o --overwrite Overwrite already existing files without warning and ignore option --number.
--number If a file already exist, append a number directly before the file extension to make the filename unique. If other numbered files already exist (ignoring case), use the maximum existing index+1. --num is a short cut.
-r --remove-dest Remove already existing files before creating it. If set, --overwrite is ignored. --rm-dest is a short cut.
-u --update Create only files that do not exist. Already existing files are ignored without warning. If set, --overwrite and --remove-dest are ignored.
-p --preserve Preserve file times (atime+mtime) while converting or copying files.
-H --no-header Suppress the syntax information section in KMP text files.
-B --brief Suppress information lines in decoded KMP text files. This includes syntax information (--no-header). If set twice, the output of unneeded sections is also suppressed.
-X --export Enable the export modus and create small and machine readable text files for easy post processing. The option works similar like -HBB for KMP text files.
-P --no-param Disable parameter support in decoded KMP text files.
-G --generic Forget scanned entry names and use generic names for output.
--no-echo Suppress output of @ECHO commands while scanning text files.
-N --no-check Do not make plausibility checks for KMP files.
-i --ignore Ignore non existing source files without warning.
-c --const list Define constant values, that are used by the internal encoders and by the numeric options as predefined global variables. This option allows a conditional encoding of text files. It can be used multiple times for multiple definitions.

The Parameter is a comma separated list of terms and a term is 'name=expression'. The expression is calculated by the text parser.

--scale vector[@origin] Transform the data: Scale all coordinates and size values by 'vector' relative to the point 'origin'. If the origin is not set, 0,0,0 is used instead.

Negative values mirror the coordinates. Each parameter is either a vector expression or a comma separated expression list of coordinates ('x,z' or 'x,y,z').

Transformations are calculated in the order SCALE, SHIFT, ROTATE, TRANSLATE.

--shift vector Transform the data: Add 'vector' to all coordinates. Is's simlar to --translate, but the addition is done before rotation. The parameter is either a vector expression or a comma separated expression list of coordinates ('x,z' or 'x,y,z').

Transformations are calculated in the order SCALE, SHIFT, ROTATE, TRANSLATE.

--xss x1old,x1new,x2old,x2new --xss (x-scale-shift) calculates the X values of --scale and --shift, so that the old values are transformed to the new values. The parameters are numbers or expression.
--yss y1old,y1new,y2old,y2new --yss (y-scale-shift) calculates the Y values of --scale and --shift, so that the old values are transformed to the new values. The parameters are numbers or expression.
--zss z1old,z1new,z2old,z2new --zss (z-scale-shift) calculates the Z values of --scale and --shift, so that the old values are transformed to the new values. The parameters are numbers or expression.
--rot degree[@origin] Transform the data: Rotate all coordinates and rotation values by the angle 'degree' (is a vecotr) around the 3 axes. All 3 axes goes through the point 'origin'. If the origin is not set, 0,0,0 is used instead.

Each parameter is either a vector expression or a comma separated expression list of coordinates ('x,y,z').

Option --rot is an alternative for --xrot, --yrot and --zrot to define all 3 rotations in one step. Transformations are calculated in the order SCALE, SHIFT, X-ROTATE, Y-ROTATE, Z-ROTATE, TRANSLATE.

--xrot degree[@origin] Transform the data: Rotate all coordinates and rotation values by the angle 'degree' around the x-axis, that goes through the point 'origin'. If the origin is not set, 0,0,0 is used instead.

Each parameter is either a vector expression or a comma separated expression list of coordinates ('y,z' or 'x,y,z').

Transformations are calculated in the order SCALE, SHIFT, X-ROTATE, Y-ROTATE, Z-ROTATE, TRANSLATE.

--yrot degree[@origin] Transform the data: Rotate all coordinates and rotation values by the angle 'degree' around the x-axis, that goes through the point 'origin'. If the origin is not set, 0,0,0 is used instead. This is a horizontal counterclockwise rotation and the old option name --hrot can also used.

Each parameter is either a vector expression or a comma separated expression list of coordinates ('x,z' or 'x,y,z').

Transformations are calculated in the order SCALE, SHIFT, X-ROTATE, Y-ROTATE, Z-ROTATE, TRANSLATE.

--zrot degree[@origin] Transform the data: Rotate all coordinates and rotation values by the angle 'degree' around the z-axis, that goes through the point 'origin'. If the origin is not set, 0,0,0 is used instead.

Each parameter is either a vector expression or a comma separated expression list of coordinates ('x,y' or 'x,y,z').

Transformations are calculated in the order SCALE, SHIFT, X-ROTATE, Y-ROTATE, Z-ROTATE, TRANSLATE.

--ypos pos This option defines an Y position for KMP/CKPT transformations. It has only impact to X and Z rotations (Options --xrot and --zrot). If not set, the mean y of the active rotation origins are used.
--translate vector Transform the data: Add 'vector' to all coordinates. Is's simlar to --shift, but the addition is done after rotation. The parameter is either a vector expression or a comma separated expression list of coordinates ('x,z' or 'x,y,z'). --trans is a short cut.

Transformations are calculated in the order SCALE, SHIFT, ROTATE, TRANSLATE.

--null Create a neutral transformation without affecting the coordinates. The only influence is, that the dependent values (like maximum) are re-calculated as if a transformation has taken place.
--next Close the current transformation step with all scaling, shifting, rotation and translation options and open a new step with cleared options. On transformation each step is logical done one by one. In real, one total transformation matrix is calculated and used for fast transformations.

If option --next is used, the ability for modifying the scale and rotation vectors (not the positions) of different KMP sections is nearly always lost. A warning is printed if this occurs.

--ascale factor@dir Transform the data and do an axis scale: Close the current transformation step like --next and scale the data by 'factor' into the direction given by the vector 'dir'. Store the resulting matrix as single transformation step and open a new one.

This kind of transformation is EXPERIMENTAL!

--arot degree[@pos1]@pos2 Transform the data and do an axis rotation: Close the current transformation step like --next and rotate the data by 'degree' around the axis defined by the 2 points. If 'pos1' is not set, use 0,0,0 instead. Store the resulting matrix as single transformation step and open a new one.

This kind of transformation is EXPERIMENTAL!

--tform-script script Load the script and execute it by the text parser.

Then for each coordinate (2D and 3D), call the macro TRANSFORM after all other transformations. Call it without parameters and set variable $I with a zero based index of all vertices, variable $D to the dimension (2 or 3) and the variable $P to the vector of the current vertex. If the macro returns a vector, it is the new position.

For each file, macro BEGIN is called at the beginning and END after proccessing all points, but only, if the macros are defined. For END, variable $I is set to the number of proccessed vertices in the current file.

Before each macro call, the private and local variables are cleared and only global parameters are permanent. The zero based index is cleared for each new source. The parameters of the macro calls are defined in the local name space.

--kmp list Set global options for KMP processing. Parameter 'list' is a comma separated list of keywords. A minus sign before a keyword disables a setting. Each occurrence of the option will only change entered settings and all other settings are untouched.

Keyword DEFAULT resets the default settings and CLEAR disables all. The other allowed keywords are: FORCE, NEW, RM-SPCITEM, LEFT, RIGHT, WIDE, NARROW, FIX-CKPH, FIX-ENPH, FIX-ITPH, FIX-PH, FIX-CKNEXT, FIX-CKJGPT, FIX-CK, FIX-ALL, 1LAP, 2LAPS ... 9LAPS, INPLACE, SILENT and LOG.

--speed-mod factor The speed modifier is a user extensions to change the basic speed of all vehicles. The speed factor itself is stored into KMP/STGI section of a track.

If --speed-mod is set to a value >0.0, then the last 2 bytes of the STGI section are patched. The value 0.0 reset these 2 bytes and deactivates the speed modifier.

--tform-kmp list Select KMP sections and objects for a transformation. --tkmp is a short cut. The option expects a comma separated list of keywords. Non ambiguous of keywords are allowed and minus signs within keywords are optional (e.g. GOBJS). A minus sign before a keyword disables transformation of the related section or object.

Sections are selected by the KMP section names AREA, CAME, CKPT, CNPT, ENPT, GOBJ, ITPT, JGPT, KTPT, MSPT and POTI.

Objects are selected by the keywords AREA-POSITION, AREA-ROTATE, AREA-SCALE, CAME-POSITION, CKPT-POSITION, CNPT-POSITION, CNPT-ROTATE, ENPT-POSITION, ENPT-SCALE, GOBJ-POSITION, GOBJ-ROTATE, GOBJ-SCALE, ITPT-POSITION, ITPT-SCALE, JGPT-POSITION, JGPT-ROTATE, KTPT-POSITION, KTPT-ROTATE, MSPT-POSITION, MSPT-ROTATE and POTI-POSITION.

The keywords NONE and ALL (default) complete the field.

--rm-gobj objlist Remove objects from the KMP section GOBJ. Therefor a comma separated object list with single values like 'a' or ranges like 'a:b' is expected. 'a' and 'b' are numbers, object names (prefixed by 'o$') or any other parser expressions.
--slot keyword Patch a track file to run at the specified slot. KMP and KCL may be modified. BRRES files may be added to or removed from SZS. The main keywords are DAISY, DESERT, SHERBET, SHYGUY, STANDARD and MOST. Slot numbers (except '42' and '4.2') and different other track names are also accepted. For some conversions, the auto-add library is needed.
--load-kcl file Load a KCL or OBJ file for reference issues.
--kcl-script script After reading a KCL source file and executing all transformations, the text file 'script' is executed by the internal text parser. The script should use the parser functions tri$*() to read and modify the triangle positions and flags, or to add or remove complete triangles.

If this option is used multiple times, each script is executed in the entered order.

3.   Description

The command DRAW draws KMP objects and points into an internal 3D object list and export it as a Wavefront OBJ file. The output can be combined with a KCL as reference.

The command is also known as COBJECT (Create OBJECT). This old command name can still be used.

3.1   Examples

The first example is a non perspective top view of Peach Gardens with check points and enemy routes. It was created with wkmpt draw old_garden_ds.szs --draw kcl,ckpt,enpt,objects and viewed with 3ds Max:

Top view of Peach Garden

The second example shows a part of Grumble Volcano as perspective view. It was created with the same command option as above. It's very easy to detect the missing mandatory check point as reason for the well known ultra short cut:

Perspective view of Grumble Volcano

The third example shows a part of DK Summit as non perspective top view. It shows the cannon, the check points, the respawn points and the relation between check and respawn points. It was created with: wkmpt draw boardcross_course.szs --draw -enpt,-itpt. Option »--draw -enpt,-itpt« means: Draw all, but not enemy and item routes.

Top view of DK Summit

3.2   -w list   |   --draw list

The parameter is a comma separated list of keywords to select the elements to draw. Allowed keywords are: CKPT, CJGPT, JGPT, KTPT, ENPT, ITPT, POTI, CNPT, ITEMBOXES, ROADOBJECTS, SOLIDOBJECTS, DECORATION, KCL, NONE and ALL (default); the classes POINTS, OBJECTS and RESPAWN; the presence-flag selectors [1-3]OFFLINE and [1-3]ONLINE; the special options DETAILED and WARNINGS. If a keyword is prefixed by a minus sign, the option is disabled. Option KCL decides, if the reference KCL is included in the output. If DETAILED is disabled, an output with less faces is created. If WARNINGS is enabled, some objects are drawn in red.
This option decides, which elements are included into the Wavefront OBJ file. As parameter a comma separated list with keywords is expected. Most keywords can be prefixed by a minus sign to disable the option.

If the very first character of the list is a minus sign, the options are initialized with ALL,DETAILED,WARNINGS to allow an explicit deactivation. Otherwise the list the list is initialized with NONE,DETAILED,WARNINGS. The general default is ALL,DETAILED,WARNINGS.

Keywords for option --draw
keyword Description
ENPT Draw the enemy routes of KMP sections ENPT and ENPH with respect to junctions. Each step of every route is drawn as a blue prisma (line) from one point to the next. Option DETAILED has impact to the presentation.
ITPT Draw the item routes of KMP section ITPT and ITPH with respect to junctions. Each step of every route is drawn as a red prisma (line) from one point to the next. Option DETAILED has impact to the presentation.
CKPT Draw the check points of KMP section CKPT and CKPH. All checkpoints are drawn as blue and cyan gates with a solid border and a transparent wall. The lap count, mandatory and standard check points are drawn with different styles and colors. The IDs of the mandatory check points are also visible (number of visual objects at the top border).

The check points are joint together to make the routes and junctions visible. Like navigation lights, a dark red is used for the left side and a dark green for the right side.

If WARNING is set, invalid check point quadrilaterals (not convex or corner distance to small) are drawn in light red.

CJGPT CJGPT is only active, if CKPT is also set: Draw 2 green lines from the check point top corners to the related respawn point.
JGPT Draw each respawn point as green arrow pointing to the defined direction and as a rectangle, that covers the respawn area. The tip of the arrow is the defined position. Option DETAILED has impact to the presentation.
KTPT Draw each start position as black arrow pointing to the defined direction and as a rectangle, that covers the starting area. The tip of the arrow is the defined position. The length of the rectangle depends on the narrow flag of section STGI. Option DETAILED has impact to the presentation.
POINTS
PTS
PTS is a short cut for all single points (points, that not part of a route). At the moment it is the same as JGPT,KTPT.
RESPAWN Include all, that is needed to review respawn points. RESPAWN includes CKPT,CJGPT,JGPT,KTPT,KCL.
CNPT Find cannon points in the KCL and estimate the landing zone by analysing the KMP section CNPT. The calculation interpretes also the x- and y-rotation values to find the landing zone.

Draw a mangenta cube at the landing zone and a mangenta arrow as direct way from the cannon shoot point to the landing zone. Option DETAILED has impact to the presentation.

POTI Draw the routes defined by the POTI section with respect to the cyclic flag. Each step of every route is drawn as a green prisma (line) from one point to the next. 4 different green colors are used for the routes. Special colors are used for routes used by ITEMBOXES or SOLIDOBJECTS.
ITEMBOXES Draw each standard itembox (GOBJ ID 0x65) like in-game as a grey cube with a vertex down. The color for itemboxes with special items for players or enemies is dark grey.

For itemboxes with routes, the routes are drawn as grey/green prisma lines.

ROADOBJECTS This class is available since v1.46.

Draw each global object (section GOBJ), that acts like a road. At the moment ROADOBJECTS covers the following objects, that are drawn with correct size and recognizable form and color: kinoko*, DKturibashiGC

SOLIDOBJECTS Draw each solid global object (section GOBJ), that not have a route and is not part of ROADOBJECTS. For some objects (see below) an internal database holds an info about format, color and size of the objects. All other object are drawn as dark blue octahedron.

At the moment the following objects are drawn with correct size and recognizable form and color: itembox, obakeblockSFC*, dokan*, karehayama and all trees.

For solid objects with routes, the routes are drawn as cyan prisma lines.

DECORATION Draw each unsolid global object (section GOBJ), that not have a route and is not part of ROADOBJECTS.

At the moment only the following objects are drawn: WLscreenGC.

OBJECTS
GOBJ
This is a short cut for all supported global objects. At the moment it is the same as ITEMBOXES,ROADOBJECTS,SOLIDOBJECTS,DECORATION.
1OFFLINE
2OFFLINE
3OFFLINE
1ONLINE
2ONLINE
3ONLINE
Each keyword represents one flag of the GOBJ presence flag. If at least one bit is set, then only objects are drawn, if the correspondent presence flag is set.
OFFLINE Short cut for 1OFFLINE,2OFFLINE,3OFFLINE.
ONLINE Short cut for 1ONLINE,2ONLINE,3ONLINE.
KCL Include the KCL data to the OBJ output. Different KCL types are drawn in different colors.
NONE Disable all of above. This is a start point for a positive list.
ALL Enable all of above. This is a start point for a negative list.
DETAILED This option is independent of NONE and ALL. If set (the default), then the lines are drawn with many faces to get a good view. If disabled, the tool reduces the number of used faces for most KMP elements.
WARNINGS This option is independent of NONE and ALL. If set (the default), invalid check point quadrilaterals (not convex or corner distance to small) are drawn in red. Other warnings may follow.