Category Archives: trueSpace

button notes


general notes for scripting buttons

var tbbutt = Node.Create(‘Windows Manager Package/Toolbar Button Item’, mytoolbar);
Node.Value(tbbutt, “ControlID2D”) = “{2BBC850E-6EEF-4364-9265-A4A606AE464B}”;//must be this guid
Node.Value(tbbutt, “ControlID3D”) = “{2BBC850E-6EEF-4364-9265-A4A606AE464B}”;
//Node.Value(tbbutt ,”Package”) = “{E0C3ABBA-AA1C-4A09-8089-9ED4A8AC63B9}”;//needed for menu button
Node.Value(tbbutt, “Menu”) = false;
Node.Value(tbbutt, “Name”) = theframeSN;
//Node.Value(tbbutt ,”Preview2D”) = 303;//needed for image button
//Node.Value(tbbutt ,”Preview3D”) = 303;
var tbbutt2 = Node.Rename(tbbutt, theframeSN + “Button”);

truespace links(copied from wiki)

Truespace Links

* United 3d Artists website and forum
* truespace faq and download links

To install dribble:

  • download and install 3Delight
  • download dribble source code and unrar the file
  • inside find a zip archive – .\dribble_source_092509\dribble\install\
  • unzip to find the setup program inside – dribble1.04wip080808_setup.exe
  • download dribble shaders for 3Delight 9.0 and copy to the \Program Files3Delight\shaders\ folder

truespace bugs(copied from wiki)

truespace 6.6

  • The truespace installers will work up to version 6.6 for windows7 64bit, but the service packs will not install. This may be true for win7 32bit as well. Workaround is to copy the folder directories from a machine that already has SP1 and or SP2 installed onto the unpatch truespace folders on the win7 machine. This is true for truespace and the conversion pak installers for the service packs.

truespace 7.6

  • The Soft Select custom profile image control has a bug in that it only sees the alpha channel not the color. So it needs a 32 bit image to work.
  • The Photoshop(psd), Tagged Image Format(tif) and Paint Shop Pro(psp) image formats do not load.
  • If you save an object from a material instanced scene and load it into a fresh scene it looks the same but the material has been corrupted and cannot be edited.
    • Workaround is to change material settings to No Instancing and uncheck Edit Material Directly then pick the object material and reapply it back onto the object to save the material definition within the object.


  • trueSpace 7.61 Save Workspace Animation to file – going to Model Space and using the Render Scene To File, selecting the Workspace option produces an stationary animation. Problem also shows as no motion in model space when scrubbing the workspace time line.
  • Activate wireframe, transparent, or wireframe + transparent display mode, remove all lights and add a spotlight. The result is that all meshes in the scene disappear unless they fall within the spotlight cone. **Workaround is to add an ambient light with black color.
  • Render Engine selection does not work in the Panel view, PhotoRender. In fact none of the render settings from the PhotoRender panel works.
    • Workaround is to use TS6 Files – Preferences panel to select the render engine and right click the corresponding buttons to change items like background color.
  • The workspace Spotlight shines in 2 directions.
    • Workaround is to turn off hardware shadow filter in the hardware settings dialog.
  • The Displacement Mapper panel image control is the same color as the panel background. Making it invisible. The image control is located to the right of the words “Height map”, so control click in that general area to load an image.
  • The Soft Select custom profile image control is the same color as the background and so invisible. It also has a bug in that it only sees the alpha channel not the color.
  • The Photoshop(psd), Tagged Image Format(tif) and Paint Shop Pro(psp) image formats do not load.
  • If you expand a Matrix or OwnerMatrix input and decide to remove the ExpandInMatrix node, you must disconnect it first or the item will not move in 3d space until the input is reset.
  • “Zoom to Fit All” for colors in the FCurve editor will cause a crash.
  • The windows xp animated screen character that appears when you do a search in Explorer(Windows Explorer not Internet Explorer) stops the truespace button tooltips from displaying. Select “Change Preferences” then choose “Without an animated screen character” to fix it.
  • Loading a context does not load completely.
    • Close truespace and open it and the context load will be complete.
  • If you save an object from a material instanced scene and load it into a fresh scene it looks the same but the material has been corrupted and cannot be edited.
    • Workaround is to change material settings to No Instancing and uncheck Edit Material Directly then pick the object material and reapply it back onto the object to save the material definition within the object.
  • The material picker for workspace does not work when switching to the camera view.
    • Workaround is to make some change to the scene after the switch to camera view. Point Edit something, move or scale something, add a new primitive.

truespace renderers(copied from wiki)


To install dribble:

  • download and install 3Delight
  • download dribble source code and unrar the file
  • inside find a zip archive – .\dribble_source_092509\dribble\install\
  • unzip to find the setup program inside – dribble1.04wip080808_setup.exe
  • download dribble shaders for 3Delight 9.0 and copy to the \Program Files\3Delight\shaders\ folder

Note that as of 3Delight ver 9.0.84(maybe earlier) that the license server is no longer required unless you need to run on more than 2 cores.
How to Recompile the Shaders:

3Delight must already be installed to run the shader compiler.

After unRaring the file find the shaders folder

new way:

select the sl files in explorer(max of 15 files at one time), right click and choose “Compile with 3Delight”
old way:

open a command window to this location – windows 7 shift-right click on the folder gives an option to open the command window to that location

type the following command:

shaderdl *.sl
The result will be that all the old *.sdl files will be replaced with new ones specific to the version of 3Delight you are running. Copy the new sdl files to the 3Delight shaders folder. C:\Program Files (x86)\3Delight\shaders




The virtualight download includes some vs and bitmap files that are missing from the last trueSpace release(7.61)

truespace misc sdk notes from the wiki


creates some xml documentation files RsCmdDoc.xml and RsNodeDoc.xml
RsImport.ExportCollada(‘filename’,’list of nodes’) – will export a collada file via script
Widgets.Rotate == rotate about origin (0,0,0) then offset back to original position
WindowsManager.MoveWindow name item enhanced about possibility to work with working area size or the whole window size.

   * Example:
         o WindowsManager.MoveWindow(idWindow, -1, -1, Width, Height, WorkAreaSize, -1, -1);

trueSpace Python Notes(copied from wiki)

The python samples don’t work for trueSpace7.61 unless you copy the contents of the PythonScripts folder into the tS folder. The other option is to add 2 lines to the top of your python script:

import sys


This tells python to look inside the PythonScripts folder for modules to load.

Bug: GetMaterial(matidx), the object get material function always returns None.
Tutorials on the Wayback Machine, look at the early years:*/

trueSpace Collada Export


Workspace: If the copy textures option is not selected, image references with made up names(file_0, file_1, file_2) are created in the dae file with a relative path in the same location as the dae file.

Modelspace(procedural textures): If the copy textures option is not selected, the collada file will refer to texture files file_0… in the same location as the dae file, but no texture files will be created.

Modelspace(texture map): If the copy textures option is not selected, the collada file will refer to the texture directly but in a bad format and using an absolute path instead of relative.

Workspace: If copy textures option is selected then a folder with the same name as the dae file is created and the texture files(file_0…) are created in the folder and relative paths are created in the dae file to these textures.

Modelspace(procedural textures): If copy textures option is selected a folder with the same name as the dae file is created and texture files are created in it.

Modelspace(texture map): If copy textures option is selected an empty folder with the same name as the dae file is created(BUG), the texture file is copied to the same path as the dae file not into the new folder and the dae file will refer to the original texture file using absolute addressing in a bad format.(BUG)

Workspace texture in modelspace is treated the same way as modelspace procedural texture, but if the model is altered through point edit then a texture is created in the “Rs Tmp Textures” folder and it will act like a modelspace texture map export.

Normal map textures are referred in an xml “extra” tag, because these maps are not directly supported by the collada standard.

The diffuse and specular tags in the dae file from truespace always refers to the same texture.(BUG?)
The modelspace and precompiled workspace textures will export diffuse, alpha and normal maps.

Workspace materials composed of the various shaders bricks use the InputBitmap node to define the textures used. The InputBitmap nodes “Input usage” connector determines how it is exported, “DIFFUSEMAP” goes to diffuse, “NORMALMAP” goes to normal. Chapter 5 pg 143 of the truespace manual has a list under the heading “Material Compatibility”. The only maps listed are diffuse and normal. No alpha map is listed, but experimentation shows that if “ALPHAMAP” is typed into the input usage field an alpha texture is created for the collada file.
Vertex paint does not export even though the exporter has an option for it.(BUG)

Modelspace skeletons exports as a hierarchy of nodes/nulls made from truespaces bones and joints instead of actual joint nodes and no skinning information is exported.

trueSpace Tips & Tricks


The startup menu (accessible by holding the CTRL key while starting trueSpace) allows you to start trueSpace in any real time mode, as well as start a “clean” trueSpace session without automatically loading any stored configurations and projects.

[From United3dArtists forum author marcel]

You know TS is not a perfect software because it have a lot of bug. Most of them can be resolved when you know a trick like this (model side only):

– If you have a problem when you try to edit an object (TS crash), try to export the object with luuv (.obj) then import the new object and put it instead of the bad TS object in the scene. Edit mode could work now. I think because there is a bad thing saved with the TS object.

– if TS crash when you change the material of an object (wireframe), most of the time it is when TS do a render of the object. to avoid this problem use solid mode before apply a new texture. with solid mode TS don’t use Lightwork to show the new material on the screen.

– if TS crash when you change the view on a windows (ex: when you create a cam then open a windows), be sure you are on wireframe mode before you selected the cam icon of the windows to change the view.

-The best way to clean a bad TS scene (most of the time it is a problem with both side together) is to save each object (model, light, cam,…) as .cob then close TS, open TS, bridge off, open a new scene and load all the object to create a new scene without problem and keep brigde off.

– if you work on model side but you need a tool from workspace (displacement, hair,..) create a temporary scene, put bridge on and do what you need on the workspace. then on model side save the result as a .cob object. Turn bridge off and open your scene to add the new object.

– a .scn file can be ten time smaller than the same created with both side and with less problem. Be carefull about that and you can to continue to work with the model side with less RAM allowed for the workspace and more RAM for you.


Files to delete for “clean” session, may also help some model side problems


The Windows Manager Space node under Project has an attribute called “ShowFullPath”. Change this from 0 to 1 to show the full paths of nodes under Project in the title bar.
info panel math: +,-,*,/,sin,cos,arcsin,arcos,ln,log,exp,sqrt,PI

soft paint has a morph mode to paint one morph into another

truespace can save bvh files

LE panel editor – shift + size a control will effect entire row/column

It is possible to change topology after a vertex morph already defined

Primitive tool

   * Adding a cube. There are 3 modes how to add a cube.
         o Diagonal – this is Modeler way. LClick to define first corner, drag and rclick do define second corner.
         o Edges – define cube by defining two edges. First click & drag defines bottom X edge. Second click&drag defines Z edge.
         o Corners – cube is created after adding 4 points. (you can either click or drag to use xy or z movements).
   * For adding torus, sphere, cylinder, cone there are 2 modes.
         o Diameter – define diameter for base, by ldrag, rdgar defines height.
         o Radius - define center + radius for base, by ldrag, rdgar defines height.
   * Adding text has only one mode; ldrag + rdrag defines orientation of text XY plane rotation.
   * Primitive employs extensive snapping.
   * You can specify height directly by snapping to other objects during rdrag. Primitive base can be precisely aligned by
constraining movement to 1D and aligning with other objects like in rdrag mode. Constraining can be done either by locking
axes or locking to edges / faces.
   * You can specify edge endpoint (diagonal, radius…) in plane mode directly by snapping to other objects by holding ALT key.
   * ALT key can be used to force snapping even if cursor is in nosnap range defined by added primitive and nosnap radius
found in tool preferences panel.
   * To finish primitive tool, rclick in player view.
   * To access primitive preferences panel, rclick on appropriate tool button. To access primitive tool preferences panel,
rclick on any primitive tool and change preferences panel aspect to default.

Select by bounding box => smaller object has higher priority

Workspace View - Transparency
   * New Show hidden faces option in object and layer render attributes (Player - Rendering) allows to display otherwise
invisible faces of transparent objects.
   * New Transparency Mode option allows choosing transparent faces sorting option. No solving mode displays objects without
reorder. Triangle sort option is a bit slower and uses distance of triangles from the viewer to draw distant triangles first.
Transparency mode option is ignored when Show hidden faces is not enabled.
   Snapping & constraints
   * Snapping and constraints are used to allow high precision modeling. Snapping tools compute nearest position that may be
useful (grid point, vertex, edge…) and constraints lock movement to specified direction(s). These tools are accessible from
Player toolbar. Tool is activated by clicking on it; additional tool properties are accessible by rclicking on the tool icon.
Panels for snapping tools are located in preferences encapsulator (/Preferences/Snapping/ and /Preferences/Snapping/Point edit
   * Snapping & constraints can be combined and activated together. For example you can have active grid snapping and snap to
edge at once. Then when moving or drawing a polygon nearest point will be used as a snap position. This is also valid for
constraints, for example when constraining movement to two non-parallel planes movement will be constrained to their
   * You can have as many snapping managers as you wish, movement widget tools are now extended to contain snapping group
name. In this way you can add special controls to widgets that will cause snapping to selected elements, whereas other
controls can move without snapping or constraints. (Interesting?)

General Snapping & constraints

   * Grid snapping – snaps to grid when moving. There are two modes for grid snapping – Absoulte and Relative. Absolute mode
snaps in selected coordinate system where origin is defined by Offset parameters, Relative mode takes widget position as an
origin (so it snaps to original position). Mode is changed by checkbox near offset parameters. Step defines density of the
grid. When set to 0, snapping along that axis is disabled:
   * Axes locks – can be used to lock movement direction to selected axes(X,Y,Z checkboxes). If you check 2D in ortho view
than X and Y axes will be mapped according to camera view when using orthogonal views. Angle specifies rotation of axes in 2D
views and allows rotating constraint axes according to your needs.

Point edit Snapping & constraints

     Showing properties panel will show default aspect of point edit snapping tools. Panel contains settings for both vertex
snapping and lock to selection constraint.
     Vertex snapping snaps selected vertices to various positions when they are moved. Snap to vertices enables vertex to
vertex snapping. Snap to edges enables vertex to edge snapping. Edge points specifies count of internal edge points that
vertices will be snapped to. This setting requires that edge snapping is enabled. Setting to 0 will turn snapping to edge
mid-points off. Snap to faces controls vertex to face snapping.
     Lock to selection constraint tool allows to constraint movement to specified plane or edge similar to axes locking.
Select a face or edge and press Set button to use face or edge plane as constraint direction.
   Note: Both vertex snapping and lock to selection have advanced panels that are accessible by changing aspect of point edit
snapping panel. 
   * Vertex snapping:
         o Snap Pairs control whether to snap widget position or perform snapping between vertices and all enabled elements.
         o Snap distance defines radius for snapping in screen pixels. In 3D depth is also restricted to snap distance, in 2D
depth is ignored.
         o Marker specifies vertex size and color for position when it is not active.
         o Snap defines vertex size and color for vertex when snapped.
         o Only face edges will disable snapping to internal face edges.
     Select lock:
           Marker color and Transparency define properties of marker that is displayed to show movement constraints.

Using point edit snapping & constraints

     To use the tool point edit snapping, enable required snapping modes, make a selection and move it with point edit widget.
           When vertex gets snapped, snap will be showed by displaying snapped vertex with Snap color.
           If you snap any vertex to edge or triangle and hold shift, tool will show guide line and movement will get
constrained to that edge or plane.
           If you have enabled edge points and you snap to edge, snapping positions will be evaluated also outside that edge.
           Possible movement will be shown by rectangles with Marker properties.
     Snapping to face and pressing shift will constraint to 2D plane.Not so sure about that
           When constraints are active, snapping continues to work and you can move vertex and snap it to selected snapping
           Following image shows case when vertex was snapped to face and shift was pressed. Then the vertex was moved in XZ
plane (the plane was rotated to constraint space) and snapped to face.
           Yellow dashed lines show constraint space, top yellow triangle shows face triangle that defines constraint plane,
middle yellow triangle shows face that vertex is snapped to.
           When guideline is showed, you can use Ctrl to specify perpendicular direction constraint. With Ctrl pressed, your
movement will be constrained to perpendicular motion to edge or face. (Is this true?)
     Snapping for other tools work similarly.

Using Lock to selection

   * To use the tool, in point edit mode select face, two faces or edges.
         o When selecting face, movement will be constrained to that face. This will be visualized by showing 2 arrows from
face center.
         o When selecting two faces, movement will be constrained to edge defined by intersection of two planes.
         o When selecting edges, movement will be constrained to 1D.
   * This tool is useful when modeling in 2D views where 3rd coordinate can be automatically computed from constraints (for
example when modeling a roof on a house).
   * To set constraint, make a selection and press Set button in Point edit snapping panel. To remove constraints, press Reset
Polygon draw
   * Polygon draw tool allows directly drawing faces or edges during point edit mode.
   * Activate the tool by clicking on Polydraw tool icon in Player toolbar.
   * When selected object is not in point edit mode tool will activate it.
   * You add vertices connected by edges, by clicking on the mesh faces.
   * To modify vertex position during polygon draw, drag existing vertex.
   * To add new vertex on the edge, click on it.
         o When hovering above edge, Polydraw tool shows highlite of vertex that will be added.
         o To remove the vertex, move the vertex you want to delete to another vertex.
         o Tool will not allow creating invalid geometry. When trying to create bad polygon highlite will show in red.
         o To close the loop, click on the first vertex.
         o You can draw polygon across multiple faces, but edges need to pass thru edges or vertices on neighboring faces.
         o When you draw acceptable set of edges, Polydraw will change highlite to selection color.
               + When you activate other widget tool in this state, tool will finish without closing whole polygon. This
behavior is intended for drawing edges or adding vertices.
Snapping and Polydraw
   * You can use snapping with Polydraw:
         o simply enable or disable snapping & constraint tools when drawing polygons.
         o Activate guideline by snapping current vertex to edge and press shift key. If you want to move in perpendicular
direction, hold shift and ctrl.(that ctrl bit part may not work)

Extract a deformed mesh from a character by running the Flatten History tool. Open 2 Link Editor windows one to the scene and one to the Actor node. Ctrl – drag the mesh node out of the Actor and into the scene.

trueSpace Scripting Matrix

Matrix multiplication



last rotation
myMatrix.SetPitch(-90);// myMatrix = -90 deg pitch

(this is the second rotation)
myMatrix.Mult(rollMatrix);// rollMatrix * myMatrix => myMatrix

(this is the first rotation)
myMatrix.Mult(yawMatrix);// yawMatrix * myMatrix => myMatrix

myMatrix is yaw 22 deg then roll 13 deg then pitch -90 deg

Local matrix from world matrices

theMatrix = Node.Value(bindgroup + "/" + subNode, "WldMatrix");
parentMatrix = Node.Value(bindParent, "WldMatrix");
parInvert = parentMatrix.Invert();

//now theMatrix contains local instead of world

trueSpace Scripting Selection

Space.Select() – select multiple nodes from text string separated by semi colons, node paths in the list must not have leading spaces

Node.Selection() – returns a selection list with a semicolon delimination, but has leading spaces in each nodes path so needs to be adjusted to work with Space.Select

sel = Node.Selection();
selArray = sel.split(";");
re = /^\s/; // whitespace in first character position
sel = selArray[0].replace(re,"");
if(selArray.length > 1)
		sel = sel + ";" + selArray[i].replace(re,"");

Node.Select – select one node