SlideShare a Scribd company logo
1 of 6
Dmxedit
Contents
 1 Usage
 2 Lua
o 2.1 Load/Save
o 2.2 Utility
o 2.3 Delta states
o 2.4 Wrinkle maps
o 2.5 Flex controllers
o 2.6 Expression presets
o 2.7 Meshes
o 2.8 Vertices
Dmxedit is a command-line SDK tool which manipulates DMX model files. It focuses on
flex animation.
Usage
dmxedit [ -h | -help ] [ -game <$game> ] [ -nop4 ] [ -set $var=val ] [
script.lua ]
-h
prints help information, including a list of available functions.
-game
Sets the VPROJECT environment variable to the specified game.
-nop4
Disables Perforce integration.
-set
Sets the lua variable var to the specified val before the script is run.
Lua
Unusually, commands are issued to dmxedit by creating Lua scripts. Script load DMX files,
make changes to them, then save them to a location (possibly the original location).
Here is a simple script to create wrinkle maps:
Load("C:/heavy_morphs_high.dmx")
SetWrinkleScale("BrowInV", "WrinkleNose", -0.5)
SetWrinkleScale("BrowInV", "RaiseBrowIn", 2)
ComputeWrinkles()
Save("C:/heavy_morphs_high.dmx")
Valve's dmxedit scripts are available at SourceFilmmakergamesdktoolslua. These can
be used to set up your model in the same way as Valve's.
Load/Save
Load( < $file.dmx | $file.obj >, [ $loadType ] )
Replaces the current scene with the specified scene. The current mesh will be set to
the first mesh with a combination operator found in the new scene. $loadType is one
of "absolute" or "relative". If not specified, "absolute" is assumed.
Save( [ $file.dmx | $file.obj ], [ $saveType ], [ $delta ] )
Saves the current scene to either a single dmx file or a sequence of obj files. If $file is
not specified, the filename used in the last Load() command will be used to save the
file. $saveType is one of "absolute" or "relative". If not specified, "absolute" is
assumed. If $delta is passed and the save type is OBJ, then only a single OBJ of that
delta is saved. "base" is the base state.
Import( < $file.dmx >, [ $parentBone ] )
Imports the specified DMX model into the scene. The imported model can optionally
be parented (which implictly skins it) to a specified bone in the existing scene via
$parentBone.
Merge( < $src.dmx >, < $dst.dmx > )
Merges the current mesh onto the specified dmx file and saves to the second specified
dmx file
MergeMeshAndSkeleton( < $src.dmx >, < $dst.dmx > )
Merges the current mesh onto the specified dmx file and saves to the second specified
dmx file. This function also merges deltas.
FileExists( < $filename > )
Returns true if the given filename exists on disk, false otherwise
Utility
SetDistanceType( < $distanceType > )
Sets the way distances will be interpreted after the command. $distanceType is one of
"absolute" or "relative". By default distances are "absolute". All functions that work
with distances (Add, Interp and Translate) work on the currently selected vertices.
"absolute" means use the distance as that number of units, "relative" means use the
distance as a scale of the radius of the bounding sphere of the selected vertices.
Delta states
Add( < $delta >, [ #weight ], [ #featherDistance ], < $falloffType > )
Adds specified state to the current state of the mesh weighted and feathered by the
specified #weight, #featherDistance & $falloffType. $falloffType is one of "straight",
"spike", "dome", "bell". Note that only the specified delta is added. i.e. If Add( "A_B"
); is called then just A_B is added, A & B are not. See AddCorrected();
AddCorrected( < $delta >, [ #weight ], [ #featherDistance ], < $falloffType
> )
Same as Add() except that the corrected delta is added. i.e. If AddCorrected( "A_B" );
is called then A, B & A_B are all added. This works similarly to SetState() whereas
Add() just adds the named delta.
DeleteDelta( < $delta > )
Deletes the named delta state from the current mesh
DeltaCount( )
Returns the number of deltas in the current mesh
DeltaName( < #deltaIndex > )
Returns the name of the delta at the specified index. Use DeltaCount() to get a count
of how many deltas are present
DeltaRadius( < $delta > )
Returns the radius of the specified delta, if it exists. Radius of a delta is defined as the
radius of the tight bounding sphere containing all of the deltas added to their base
state values
Interp( < $delta >, [ #weight ], [ #featherDistance ], < $falloffType > )
Interpolates the current state of the mesh towards the specified state, $weight,
#featherDistance and $falloffType. $falloffType is one of "straight", "spike", "dome",
"bell"
ListDeltas( )
Prints a list of all of the deltas present in the current mesh
MaxDeltaDistance( < $delta > )
Returns the maximum distance any vertex moves in the specified delta. Returns 0 if
the delta specified doesn't exist
ResetState( )
Resets the current mesh back to the default base state, i.e. no deltas active
SaveDelta( < $delta > )
Saves the current state of the mesh to the named delta state
SetState( < $delta > )
Sets the current mesh to the specified $delta
Wrinkle maps
See also Wrinkle maps.
ComputeWrinkle( < $delta > [ , #scale = 1 [ , $operation ] ] )
Updates the wrinkle stretch/compress data for the specified delta based on the position
deltas for the current state scaled by the scale value. If $operation isn't specified then
"REPLACE" is assumed. $operation is one of: "REPLACE", "ADD". Note that
Negative (-) values enable the compress map and Positive (+) values enable the
stretch map. This also sets the wrinkle scale to 1
ComputeWrinkles( [ #bOverwrite = false ] )
Uses the current combo rules ( i.e. The wrinkleScales, via SetWrinkleScale()) to
compute wrinkle delta values. If #bOverwrite is false, only wrinkle data that doesn't
currently exist on the mesh will be computed. If #bOverwrite is true then all wrinkle
data will be computed from the combo rules wiping out any existing data computed
using ComputeWrinkle().
SetWrinkleScale( < $controlName >, < $rawControlName >, < #scale > )
Sets the wrinkle scale of the raw control of the specified control. NOTE:
SetWrinkleScale merely sets the wrinkle scale value of the specified delta on the
combination operator. This value is only used if ComputeWrinkles() is called after all
SetWrinkleScale() calls are made. A wrinkle scale of 0 means there will be no wrinkle
deltas. The function to compute a single delta's wrinkle values, ComputeWrinkle()
does not use the wrinkle scale value at all. Negative (-) is compress, Positive (+) is
stretch.
Flex controllers
AddDominationRule( { < $dominator > [ , ... ] }, { < $supressed > [ , ... ]
} )
Create a domination rule. A lua array of strings is passed as the 1st argument which
are the controls which are the dominators and a lua array of strings is passed as the
2nd argument which are the controls to be supressed by the dominators.e.g.
AddDominationRule( { "foo" }, { "bar", "bob" } );
GroupControls( < $groupName > [ , $rawControlName ... ] )
Groups the specified raw controls under a common group control. If the group control
already exists, the raw controls are added to it
ImportComboRules( < $rules.dmx >, [ #bOverwrite ], [ #bPurgeDeltas ] )
Imports the combintion rules from the specified dmx file and replaces the current
rules with those from the file is #bOverwrite specified or is true. If #bOverwrite is
false then any existing controls that are not in the imported rules file are preserved. If
#bPurgeDeltas is specified and is true, then any delta states which are no longer
referred to by any combination rule or control will be purged.
ReorderControls( < $controlName [ , ... ] > )
Reorders the controls in the specified order. The specified controls will be moved to
the front of the list of controls. Not all of the controls need to be specified.
Unspecified controls will be left in the order they already are after the specified
controls
SetEyelidControl( < $controlName > [ , < true | false > ] )
Sets the specified morph control to be an eyelid control if the 2nd argument is true.If
the 2nd argument is omitted, true is assumed
SetStereoControl( < $controlName > [ , < true | false > ] )
Sets the specified morph control to be stereo if the 2nd argument is true.If the 2nd
argument is omitted, true is assumed
Expression presets
CachePreset( < $preset.pre >, [ $expression.txt ] )
Caches the specified $preset file for later processing by a call to
CreateDeltasFromCachedPresets(). If an $expression.txt file pathname is specified, an
expression file will be written out for this preset file
ClearPresetCache( )
Removes all preset filenames that have been specified via CachePreset() calls
CreateDeltasFromCachedPresets( [ #bPurgeExisting = true ], [ { "NoPurge1",
... } ] )
Creates a new delta state for every preset defined in the preset files specified by
previous CachePreset() calls. Calling this calls ClearPresetCache(). #bPurgeExisting
specifies whether existing controls should be purged. If #bPurgeExisting is true, then
an optional array of deltas to not purge can be specified.
CreateDeltasFromPresets( < $preset.pre >, [ #bPurgeExisting = true ], [ {
"NoPurge1", ... } ], [ $expression.txt ] )
Creates a new delta state for every present defined in the specified preset file.
#bPurgeExisting specifies whether existing controls should be purged. If
#bPurgeExisting is true, then an optional array of deltas to not purge can be specified.
CreateExpressionFileFromPresets( < $preset.pre >, < $expression.txt > )
Creates a faceposer expression.txt and expression.vfe file for the specified preset file
CreateExpressionFilesFromCachedPresets( )
Creates a faceposer expression.txt and expression.vfe file for each of the
preset/expression file pairs specified by previous CachePreset calls
Meshes
Mirror( [ $axis ] )
Mirrors the mesh in the specified axis. $axis is one of "x", "y", "z". If $axis is not
specified, "x" is assumed (i.e. "x" == mirror across YZ plane)
RemapMaterial( < #index | $srcMaterial >, < $dstMaterial > )
Remaps the specified material to the new material, material can be specified by index
or name
RemoveFacesWithMaterial( < $material > )
Removes faces from the current mesh which have the specified material
RemoveFacesWithMoreThanNVerts( < #vertexCount > )
Removes faces from the current mesh which have more than the specified number of
faces
Vertices
Select( < $delta >, [ $type ] )
Changes the selection based on the vertices present in the specified $delta. $type is
one of "add", "subtract", "toggle", "intersect", "replace". If $type is not specified,
"add" is assumed.
SelectHalf( < $halfType > )
Selects all the vertices in half the mesh. $halfType is one of left or right. Left means
the X value of the position is >= 0, right means that the X value of the position is <=
0. So it's the character's left (assuming they're staring down -z)
SelectionRadius( )
Returns the radius of the currently selected vertices, if nothing is selected, returns 0.
Radius of a the vertices defined as the radius of the tight bounding sphere containing
all of the vertices.
GrowSelection( < #size > )
Grows the current selection by the specified $size
ShrinkSelection( < #size > )
Shrinks the current selection by the specified $size (integer)
Translate( < #xTranslate, #yTranslate, #zTranslate >, [ #falloffDistance,
$falloffType ] )
Translates the selected vertices of the mesh by the specified amount
Rotate( < #xRotate, #yRotate, #zRotate >, [ #xOffset, #yOffset, #zOffset ],
[ #falloffDistance, $falloffType ] )
Rotates the current selection around the center of the selection by the specified Euler
angles (in degrees). The optional offset is added to the computed pivot point.
Scale( < #xScale >, [ #yScale, #zScale ] )
Scales the position values by the specified amount. If only 1 scale value is supplied a
uniform scale in all three dimensions is applied
ComputeNormals( )
Computes new smooth normals for the current mesh and all of its delta states.
v · d · eOfficial Source SDK tools
Map editors hammer
Map
compilers
vbsp · vvis · vrad · vmpi
Map tools bspzip · glview · vbspinfo
Texture tools
height2normal · height2ssbump · makevmt · mksheet · pfm2tgas ·
shadercompile · splitskybox · vtex · vtf2tga · xwad
Model
compilers
studiomdl
Model tools hlfaceposer · hlmv · QC_Eyes · dmxedit · itemtest
Engine tools
Particle Editor · Material Editor · Actbusy Script Editor · Commentary
Editor · Foundry · Source Filmmaker
Other
captioncompiler · demoinfo · elementviewer · mksheet · motionmapper ·
vconfig · vice · vpk

More Related Content

What's hot

Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量Zianed Hou
 
Semantics-Aware Trace Analysis [PLDI 2009]
Semantics-Aware Trace Analysis [PLDI 2009]Semantics-Aware Trace Analysis [PLDI 2009]
Semantics-Aware Trace Analysis [PLDI 2009]Kevin Hoffman
 
groovy databases
groovy databasesgroovy databases
groovy databasesPaul King
 
Database administration commands
Database administration commands Database administration commands
Database administration commands Varsha Ajith
 
Moving 12c database from NON-ASM to ASM
Moving 12c database from NON-ASM to ASMMoving 12c database from NON-ASM to ASM
Moving 12c database from NON-ASM to ASMMonowar Mukul
 
Cassandra Summit 2015
Cassandra Summit 2015Cassandra Summit 2015
Cassandra Summit 2015jbellis
 
Async all around us (promises)
Async all around us (promises)Async all around us (promises)
Async all around us (promises)Francisco Ferreira
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門Tsuyoshi Yamamoto
 
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and OptimizationPgDay.Seoul
 
Python Metaprogramming
Python MetaprogrammingPython Metaprogramming
Python MetaprogrammingSDU CYBERLAB
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)indeedeng
 
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스PgDay.Seoul
 
Php user groupmemcached
Php user groupmemcachedPhp user groupmemcached
Php user groupmemcachedJason Anderson
 
Cassandra summit keynote 2014
Cassandra summit keynote 2014Cassandra summit keynote 2014
Cassandra summit keynote 2014jbellis
 
The InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxData
The InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxDataThe InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxData
The InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxDataInfluxData
 
Oracle常用经典Sql查询
Oracle常用经典Sql查询Oracle常用经典Sql查询
Oracle常用经典Sql查询yiditushe
 

What's hot (20)

Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量
 
Semantics-Aware Trace Analysis [PLDI 2009]
Semantics-Aware Trace Analysis [PLDI 2009]Semantics-Aware Trace Analysis [PLDI 2009]
Semantics-Aware Trace Analysis [PLDI 2009]
 
Oracle ORA Errors
Oracle ORA ErrorsOracle ORA Errors
Oracle ORA Errors
 
groovy databases
groovy databasesgroovy databases
groovy databases
 
Database administration commands
Database administration commands Database administration commands
Database administration commands
 
Mysql
MysqlMysql
Mysql
 
Moving 12c database from NON-ASM to ASM
Moving 12c database from NON-ASM to ASMMoving 12c database from NON-ASM to ASM
Moving 12c database from NON-ASM to ASM
 
Cassandra Summit 2015
Cassandra Summit 2015Cassandra Summit 2015
Cassandra Summit 2015
 
Async all around us (promises)
Async all around us (promises)Async all around us (promises)
Async all around us (promises)
 
G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門G*ワークショップ in 仙台 Grails(とことん)入門
G*ワークショップ in 仙台 Grails(とことん)入門
 
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
[Pgday.Seoul 2021] 2. Porting Oracle UDF and Optimization
 
Python Metaprogramming
Python MetaprogrammingPython Metaprogramming
Python Metaprogramming
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
 
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
[Pgday.Seoul 2019] Citus를 이용한 분산 데이터베이스
 
C++ 11 usage experience
C++ 11 usage experienceC++ 11 usage experience
C++ 11 usage experience
 
Cdc
CdcCdc
Cdc
 
Php user groupmemcached
Php user groupmemcachedPhp user groupmemcached
Php user groupmemcached
 
Cassandra summit keynote 2014
Cassandra summit keynote 2014Cassandra summit keynote 2014
Cassandra summit keynote 2014
 
The InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxData
The InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxDataThe InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxData
The InfluxDB 2.0 Storage Engine | Jacob Marble | InfluxData
 
Oracle常用经典Sql查询
Oracle常用经典Sql查询Oracle常用经典Sql查询
Oracle常用经典Sql查询
 

Viewers also liked

Operasi aritmatika dan logika
Operasi  aritmatika dan logikaOperasi  aritmatika dan logika
Operasi aritmatika dan logikaEddy_TKJ
 
Tutorial instalas linux menggunakan virtualbox
Tutorial instalas linux menggunakan virtualboxTutorial instalas linux menggunakan virtualbox
Tutorial instalas linux menggunakan virtualboxEddy_TKJ
 
Pwmrograman web resume
Pwmrograman web resumePwmrograman web resume
Pwmrograman web resumeEddy_TKJ
 
Tugas kewirausahaan
Tugas kewirausahaanTugas kewirausahaan
Tugas kewirausahaanEddy_TKJ
 
Instruksi by alvian fery diansa
Instruksi by alvian fery diansaInstruksi by alvian fery diansa
Instruksi by alvian fery diansaEddy_TKJ
 
Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...
Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...
Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...Eddy_TKJ
 
7 osi layer
7 osi layer7 osi layer
7 osi layerEddy_TKJ
 
Doctype html publi
Doctype html publiDoctype html publi
Doctype html publiEddy_TKJ
 
Troubleshooting layanan ntp server
Troubleshooting layanan ntp serverTroubleshooting layanan ntp server
Troubleshooting layanan ntp serverEddy_TKJ
 
Doctype html
Doctype htmlDoctype html
Doctype htmlEddy_TKJ
 
Tutorial cara installasi linux debian copy
Tutorial cara installasi linux debian   copyTutorial cara installasi linux debian   copy
Tutorial cara installasi linux debian copyEddy_TKJ
 
Struktur kontrol dalam php
Struktur kontrol dalam phpStruktur kontrol dalam php
Struktur kontrol dalam phpEddy_TKJ
 
Network security
Network securityNetwork security
Network securityEddy_TKJ
 

Viewers also liked (14)

Operasi aritmatika dan logika
Operasi  aritmatika dan logikaOperasi  aritmatika dan logika
Operasi aritmatika dan logika
 
Tutorial instalas linux menggunakan virtualbox
Tutorial instalas linux menggunakan virtualboxTutorial instalas linux menggunakan virtualbox
Tutorial instalas linux menggunakan virtualbox
 
Pwmrograman web resume
Pwmrograman web resumePwmrograman web resume
Pwmrograman web resume
 
Tugas kewirausahaan
Tugas kewirausahaanTugas kewirausahaan
Tugas kewirausahaan
 
Instruksi by alvian fery diansa
Instruksi by alvian fery diansaInstruksi by alvian fery diansa
Instruksi by alvian fery diansa
 
Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...
Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...
Langkah langkah konfigurasi dns, webserver, mail dan webmail server pada debi...
 
7 osi layer
7 osi layer7 osi layer
7 osi layer
 
Doctype html publi
Doctype html publiDoctype html publi
Doctype html publi
 
Troubleshooting layanan ntp server
Troubleshooting layanan ntp serverTroubleshooting layanan ntp server
Troubleshooting layanan ntp server
 
Bab i
Bab iBab i
Bab i
 
Doctype html
Doctype htmlDoctype html
Doctype html
 
Tutorial cara installasi linux debian copy
Tutorial cara installasi linux debian   copyTutorial cara installasi linux debian   copy
Tutorial cara installasi linux debian copy
 
Struktur kontrol dalam php
Struktur kontrol dalam phpStruktur kontrol dalam php
Struktur kontrol dalam php
 
Network security
Network securityNetwork security
Network security
 

Similar to Dmxedit

Stata Programming Cheat Sheet
Stata Programming Cheat SheetStata Programming Cheat Sheet
Stata Programming Cheat SheetLaura Hughes
 
PowerShell_LangRef_v3 (1).pdf
PowerShell_LangRef_v3 (1).pdfPowerShell_LangRef_v3 (1).pdf
PowerShell_LangRef_v3 (1).pdfoutcast96
 
Stata cheatsheet programming
Stata cheatsheet programmingStata cheatsheet programming
Stata cheatsheet programmingTim Essam
 
Basic R Data Manipulation
Basic R Data ManipulationBasic R Data Manipulation
Basic R Data ManipulationChu An
 
Using web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworksUsing web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworksBruno Rocha
 
What is row level isolation on cassandra
What is row level isolation on cassandraWhat is row level isolation on cassandra
What is row level isolation on cassandraKazutaka Tomita
 
In java , I want you to implement a Data Structure known as a Doubly.pdf
In java , I want you to implement a Data Structure known as a Doubly.pdfIn java , I want you to implement a Data Structure known as a Doubly.pdf
In java , I want you to implement a Data Structure known as a Doubly.pdfaromalcom
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)MongoSF
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursorsinfo_zybotech
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursorsinfo_zybotech
 
Stata Cheat Sheets (all)
Stata Cheat Sheets (all)Stata Cheat Sheets (all)
Stata Cheat Sheets (all)Laura Hughes
 
R Cheat Sheet – Data Management
R Cheat Sheet – Data ManagementR Cheat Sheet – Data Management
R Cheat Sheet – Data ManagementDr. Volkan OBAN
 

Similar to Dmxedit (20)

Stata Programming Cheat Sheet
Stata Programming Cheat SheetStata Programming Cheat Sheet
Stata Programming Cheat Sheet
 
PowerShell_LangRef_v3 (1).pdf
PowerShell_LangRef_v3 (1).pdfPowerShell_LangRef_v3 (1).pdf
PowerShell_LangRef_v3 (1).pdf
 
Stata cheatsheet programming
Stata cheatsheet programmingStata cheatsheet programming
Stata cheatsheet programming
 
Basic R Data Manipulation
Basic R Data ManipulationBasic R Data Manipulation
Basic R Data Manipulation
 
Using web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworksUsing web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworks
 
What is row level isolation on cassandra
What is row level isolation on cassandraWhat is row level isolation on cassandra
What is row level isolation on cassandra
 
R programming
R programmingR programming
R programming
 
DataMapper
DataMapperDataMapper
DataMapper
 
In java , I want you to implement a Data Structure known as a Doubly.pdf
In java , I want you to implement a Data Structure known as a Doubly.pdfIn java , I want you to implement a Data Structure known as a Doubly.pdf
In java , I want you to implement a Data Structure known as a Doubly.pdf
 
Java 1-contd
Java 1-contdJava 1-contd
Java 1-contd
 
Spark workshop
Spark workshopSpark workshop
Spark workshop
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
 
Spark_Documentation_Template1
Spark_Documentation_Template1Spark_Documentation_Template1
Spark_Documentation_Template1
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursors
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursors
 
Stata Cheat Sheets (all)
Stata Cheat Sheets (all)Stata Cheat Sheets (all)
Stata Cheat Sheets (all)
 
R Cheat Sheet – Data Management
R Cheat Sheet – Data ManagementR Cheat Sheet – Data Management
R Cheat Sheet – Data Management
 
Files,blocks and functions in R
Files,blocks and functions in RFiles,blocks and functions in R
Files,blocks and functions in R
 
Sequel
SequelSequel
Sequel
 
Sqlite perl
Sqlite perlSqlite perl
Sqlite perl
 

More from Eddy_TKJ

Wireless lan
Wireless lanWireless lan
Wireless lanEddy_TKJ
 
Welcome to our community for dota 2 workshop
Welcome to our community for dota 2 workshopWelcome to our community for dota 2 workshop
Welcome to our community for dota 2 workshopEddy_TKJ
 
Tutorial menginstal linux debian
Tutorial menginstal linux debianTutorial menginstal linux debian
Tutorial menginstal linux debianEddy_TKJ
 
Tutorial instalasi mail server budi edy hery ahmad
Tutorial instalasi mail server budi edy hery ahmadTutorial instalasi mail server budi edy hery ahmad
Tutorial instalasi mail server budi edy hery ahmadEddy_TKJ
 
Tutorial firmware basic call 7 d
Tutorial firmware basic call 7 dTutorial firmware basic call 7 d
Tutorial firmware basic call 7 dEddy_TKJ
 
Tutorial cara installasi linux debian
Tutorial cara installasi linux debianTutorial cara installasi linux debian
Tutorial cara installasi linux debianEddy_TKJ
 
Tugas instalasi software
Tugas instalasi softwareTugas instalasi software
Tugas instalasi softwareEddy_TKJ
 
Topologi jaringan
Topologi jaringanTopologi jaringan
Topologi jaringanEddy_TKJ
 
Teknik komputer jaringan(register)
Teknik komputer jaringan(register)Teknik komputer jaringan(register)
Teknik komputer jaringan(register)Eddy_TKJ
 
Teknik komputer jaringan(algoritma)
Teknik komputer jaringan(algoritma)Teknik komputer jaringan(algoritma)
Teknik komputer jaringan(algoritma)Eddy_TKJ
 
Sistem informasi berbasis web
Sistem informasi berbasis webSistem informasi berbasis web
Sistem informasi berbasis webEddy_TKJ
 
Shotrcut key di ms word
Shotrcut key di ms wordShotrcut key di ms word
Shotrcut key di ms wordEddy_TKJ
 
Sampah plastik
Sampah plastikSampah plastik
Sampah plastikEddy_TKJ
 
Puisi mading
Puisi madingPuisi mading
Puisi madingEddy_TKJ
 
Pemrograman web
Pemrograman webPemrograman web
Pemrograman webEddy_TKJ
 
Operator dalam php
Operator dalam phpOperator dalam php
Operator dalam phpEddy_TKJ
 
Open source
Open sourceOpen source
Open sourceEddy_TKJ
 

More from Eddy_TKJ (20)

Wireless lan
Wireless lanWireless lan
Wireless lan
 
Welcome to our community for dota 2 workshop
Welcome to our community for dota 2 workshopWelcome to our community for dota 2 workshop
Welcome to our community for dota 2 workshop
 
Webhost
WebhostWebhost
Webhost
 
Tutorial menginstal linux debian
Tutorial menginstal linux debianTutorial menginstal linux debian
Tutorial menginstal linux debian
 
Tutorial instalasi mail server budi edy hery ahmad
Tutorial instalasi mail server budi edy hery ahmadTutorial instalasi mail server budi edy hery ahmad
Tutorial instalasi mail server budi edy hery ahmad
 
Tutorial firmware basic call 7 d
Tutorial firmware basic call 7 dTutorial firmware basic call 7 d
Tutorial firmware basic call 7 d
 
Tutorial cara installasi linux debian
Tutorial cara installasi linux debianTutorial cara installasi linux debian
Tutorial cara installasi linux debian
 
Tugas instalasi software
Tugas instalasi softwareTugas instalasi software
Tugas instalasi software
 
Topologi jaringan
Topologi jaringanTopologi jaringan
Topologi jaringan
 
Tembang
TembangTembang
Tembang
 
Teknik komputer jaringan(register)
Teknik komputer jaringan(register)Teknik komputer jaringan(register)
Teknik komputer jaringan(register)
 
Teknik komputer jaringan(algoritma)
Teknik komputer jaringan(algoritma)Teknik komputer jaringan(algoritma)
Teknik komputer jaringan(algoritma)
 
Sistem informasi berbasis web
Sistem informasi berbasis webSistem informasi berbasis web
Sistem informasi berbasis web
 
Shotrcut key di ms word
Shotrcut key di ms wordShotrcut key di ms word
Shotrcut key di ms word
 
Sampah plastik
Sampah plastikSampah plastik
Sampah plastik
 
Puisi mading
Puisi madingPuisi mading
Puisi mading
 
Praktikum
PraktikumPraktikum
Praktikum
 
Pemrograman web
Pemrograman webPemrograman web
Pemrograman web
 
Operator dalam php
Operator dalam phpOperator dalam php
Operator dalam php
 
Open source
Open sourceOpen source
Open source
 

Dmxedit

  • 1. Dmxedit Contents  1 Usage  2 Lua o 2.1 Load/Save o 2.2 Utility o 2.3 Delta states o 2.4 Wrinkle maps o 2.5 Flex controllers o 2.6 Expression presets o 2.7 Meshes o 2.8 Vertices Dmxedit is a command-line SDK tool which manipulates DMX model files. It focuses on flex animation. Usage dmxedit [ -h | -help ] [ -game <$game> ] [ -nop4 ] [ -set $var=val ] [ script.lua ] -h prints help information, including a list of available functions. -game Sets the VPROJECT environment variable to the specified game. -nop4 Disables Perforce integration. -set Sets the lua variable var to the specified val before the script is run. Lua Unusually, commands are issued to dmxedit by creating Lua scripts. Script load DMX files, make changes to them, then save them to a location (possibly the original location). Here is a simple script to create wrinkle maps: Load("C:/heavy_morphs_high.dmx") SetWrinkleScale("BrowInV", "WrinkleNose", -0.5) SetWrinkleScale("BrowInV", "RaiseBrowIn", 2) ComputeWrinkles() Save("C:/heavy_morphs_high.dmx") Valve's dmxedit scripts are available at SourceFilmmakergamesdktoolslua. These can be used to set up your model in the same way as Valve's.
  • 2. Load/Save Load( < $file.dmx | $file.obj >, [ $loadType ] ) Replaces the current scene with the specified scene. The current mesh will be set to the first mesh with a combination operator found in the new scene. $loadType is one of "absolute" or "relative". If not specified, "absolute" is assumed. Save( [ $file.dmx | $file.obj ], [ $saveType ], [ $delta ] ) Saves the current scene to either a single dmx file or a sequence of obj files. If $file is not specified, the filename used in the last Load() command will be used to save the file. $saveType is one of "absolute" or "relative". If not specified, "absolute" is assumed. If $delta is passed and the save type is OBJ, then only a single OBJ of that delta is saved. "base" is the base state. Import( < $file.dmx >, [ $parentBone ] ) Imports the specified DMX model into the scene. The imported model can optionally be parented (which implictly skins it) to a specified bone in the existing scene via $parentBone. Merge( < $src.dmx >, < $dst.dmx > ) Merges the current mesh onto the specified dmx file and saves to the second specified dmx file MergeMeshAndSkeleton( < $src.dmx >, < $dst.dmx > ) Merges the current mesh onto the specified dmx file and saves to the second specified dmx file. This function also merges deltas. FileExists( < $filename > ) Returns true if the given filename exists on disk, false otherwise Utility SetDistanceType( < $distanceType > ) Sets the way distances will be interpreted after the command. $distanceType is one of "absolute" or "relative". By default distances are "absolute". All functions that work with distances (Add, Interp and Translate) work on the currently selected vertices. "absolute" means use the distance as that number of units, "relative" means use the distance as a scale of the radius of the bounding sphere of the selected vertices. Delta states Add( < $delta >, [ #weight ], [ #featherDistance ], < $falloffType > ) Adds specified state to the current state of the mesh weighted and feathered by the specified #weight, #featherDistance & $falloffType. $falloffType is one of "straight", "spike", "dome", "bell". Note that only the specified delta is added. i.e. If Add( "A_B" ); is called then just A_B is added, A & B are not. See AddCorrected(); AddCorrected( < $delta >, [ #weight ], [ #featherDistance ], < $falloffType > ) Same as Add() except that the corrected delta is added. i.e. If AddCorrected( "A_B" ); is called then A, B & A_B are all added. This works similarly to SetState() whereas Add() just adds the named delta. DeleteDelta( < $delta > ) Deletes the named delta state from the current mesh DeltaCount( ) Returns the number of deltas in the current mesh DeltaName( < #deltaIndex > )
  • 3. Returns the name of the delta at the specified index. Use DeltaCount() to get a count of how many deltas are present DeltaRadius( < $delta > ) Returns the radius of the specified delta, if it exists. Radius of a delta is defined as the radius of the tight bounding sphere containing all of the deltas added to their base state values Interp( < $delta >, [ #weight ], [ #featherDistance ], < $falloffType > ) Interpolates the current state of the mesh towards the specified state, $weight, #featherDistance and $falloffType. $falloffType is one of "straight", "spike", "dome", "bell" ListDeltas( ) Prints a list of all of the deltas present in the current mesh MaxDeltaDistance( < $delta > ) Returns the maximum distance any vertex moves in the specified delta. Returns 0 if the delta specified doesn't exist ResetState( ) Resets the current mesh back to the default base state, i.e. no deltas active SaveDelta( < $delta > ) Saves the current state of the mesh to the named delta state SetState( < $delta > ) Sets the current mesh to the specified $delta Wrinkle maps See also Wrinkle maps. ComputeWrinkle( < $delta > [ , #scale = 1 [ , $operation ] ] ) Updates the wrinkle stretch/compress data for the specified delta based on the position deltas for the current state scaled by the scale value. If $operation isn't specified then "REPLACE" is assumed. $operation is one of: "REPLACE", "ADD". Note that Negative (-) values enable the compress map and Positive (+) values enable the stretch map. This also sets the wrinkle scale to 1 ComputeWrinkles( [ #bOverwrite = false ] ) Uses the current combo rules ( i.e. The wrinkleScales, via SetWrinkleScale()) to compute wrinkle delta values. If #bOverwrite is false, only wrinkle data that doesn't currently exist on the mesh will be computed. If #bOverwrite is true then all wrinkle data will be computed from the combo rules wiping out any existing data computed using ComputeWrinkle(). SetWrinkleScale( < $controlName >, < $rawControlName >, < #scale > ) Sets the wrinkle scale of the raw control of the specified control. NOTE: SetWrinkleScale merely sets the wrinkle scale value of the specified delta on the combination operator. This value is only used if ComputeWrinkles() is called after all SetWrinkleScale() calls are made. A wrinkle scale of 0 means there will be no wrinkle deltas. The function to compute a single delta's wrinkle values, ComputeWrinkle() does not use the wrinkle scale value at all. Negative (-) is compress, Positive (+) is stretch. Flex controllers AddDominationRule( { < $dominator > [ , ... ] }, { < $supressed > [ , ... ] } ) Create a domination rule. A lua array of strings is passed as the 1st argument which are the controls which are the dominators and a lua array of strings is passed as the
  • 4. 2nd argument which are the controls to be supressed by the dominators.e.g. AddDominationRule( { "foo" }, { "bar", "bob" } ); GroupControls( < $groupName > [ , $rawControlName ... ] ) Groups the specified raw controls under a common group control. If the group control already exists, the raw controls are added to it ImportComboRules( < $rules.dmx >, [ #bOverwrite ], [ #bPurgeDeltas ] ) Imports the combintion rules from the specified dmx file and replaces the current rules with those from the file is #bOverwrite specified or is true. If #bOverwrite is false then any existing controls that are not in the imported rules file are preserved. If #bPurgeDeltas is specified and is true, then any delta states which are no longer referred to by any combination rule or control will be purged. ReorderControls( < $controlName [ , ... ] > ) Reorders the controls in the specified order. The specified controls will be moved to the front of the list of controls. Not all of the controls need to be specified. Unspecified controls will be left in the order they already are after the specified controls SetEyelidControl( < $controlName > [ , < true | false > ] ) Sets the specified morph control to be an eyelid control if the 2nd argument is true.If the 2nd argument is omitted, true is assumed SetStereoControl( < $controlName > [ , < true | false > ] ) Sets the specified morph control to be stereo if the 2nd argument is true.If the 2nd argument is omitted, true is assumed Expression presets CachePreset( < $preset.pre >, [ $expression.txt ] ) Caches the specified $preset file for later processing by a call to CreateDeltasFromCachedPresets(). If an $expression.txt file pathname is specified, an expression file will be written out for this preset file ClearPresetCache( ) Removes all preset filenames that have been specified via CachePreset() calls CreateDeltasFromCachedPresets( [ #bPurgeExisting = true ], [ { "NoPurge1", ... } ] ) Creates a new delta state for every preset defined in the preset files specified by previous CachePreset() calls. Calling this calls ClearPresetCache(). #bPurgeExisting specifies whether existing controls should be purged. If #bPurgeExisting is true, then an optional array of deltas to not purge can be specified. CreateDeltasFromPresets( < $preset.pre >, [ #bPurgeExisting = true ], [ { "NoPurge1", ... } ], [ $expression.txt ] ) Creates a new delta state for every present defined in the specified preset file. #bPurgeExisting specifies whether existing controls should be purged. If #bPurgeExisting is true, then an optional array of deltas to not purge can be specified. CreateExpressionFileFromPresets( < $preset.pre >, < $expression.txt > ) Creates a faceposer expression.txt and expression.vfe file for the specified preset file CreateExpressionFilesFromCachedPresets( ) Creates a faceposer expression.txt and expression.vfe file for each of the preset/expression file pairs specified by previous CachePreset calls Meshes Mirror( [ $axis ] )
  • 5. Mirrors the mesh in the specified axis. $axis is one of "x", "y", "z". If $axis is not specified, "x" is assumed (i.e. "x" == mirror across YZ plane) RemapMaterial( < #index | $srcMaterial >, < $dstMaterial > ) Remaps the specified material to the new material, material can be specified by index or name RemoveFacesWithMaterial( < $material > ) Removes faces from the current mesh which have the specified material RemoveFacesWithMoreThanNVerts( < #vertexCount > ) Removes faces from the current mesh which have more than the specified number of faces Vertices Select( < $delta >, [ $type ] ) Changes the selection based on the vertices present in the specified $delta. $type is one of "add", "subtract", "toggle", "intersect", "replace". If $type is not specified, "add" is assumed. SelectHalf( < $halfType > ) Selects all the vertices in half the mesh. $halfType is one of left or right. Left means the X value of the position is >= 0, right means that the X value of the position is <= 0. So it's the character's left (assuming they're staring down -z) SelectionRadius( ) Returns the radius of the currently selected vertices, if nothing is selected, returns 0. Radius of a the vertices defined as the radius of the tight bounding sphere containing all of the vertices. GrowSelection( < #size > ) Grows the current selection by the specified $size ShrinkSelection( < #size > ) Shrinks the current selection by the specified $size (integer) Translate( < #xTranslate, #yTranslate, #zTranslate >, [ #falloffDistance, $falloffType ] ) Translates the selected vertices of the mesh by the specified amount Rotate( < #xRotate, #yRotate, #zRotate >, [ #xOffset, #yOffset, #zOffset ], [ #falloffDistance, $falloffType ] ) Rotates the current selection around the center of the selection by the specified Euler angles (in degrees). The optional offset is added to the computed pivot point. Scale( < #xScale >, [ #yScale, #zScale ] ) Scales the position values by the specified amount. If only 1 scale value is supplied a uniform scale in all three dimensions is applied ComputeNormals( ) Computes new smooth normals for the current mesh and all of its delta states. v · d · eOfficial Source SDK tools Map editors hammer Map compilers vbsp · vvis · vrad · vmpi Map tools bspzip · glview · vbspinfo Texture tools height2normal · height2ssbump · makevmt · mksheet · pfm2tgas · shadercompile · splitskybox · vtex · vtf2tga · xwad Model compilers studiomdl
  • 6. Model tools hlfaceposer · hlmv · QC_Eyes · dmxedit · itemtest Engine tools Particle Editor · Material Editor · Actbusy Script Editor · Commentary Editor · Foundry · Source Filmmaker Other captioncompiler · demoinfo · elementviewer · mksheet · motionmapper · vconfig · vice · vpk