MaterialAnimation
Basic Material Animation can be applied to designer objects in world. These animations consist of material textures instructed to move along the face of the object. Programming for these instructions can be done inside TsFiles.
Material Animation constants
Drawmode | Drawing mode of texture (not detailed) | ||
---|---|---|---|
drawmode= | value | description | |
0 | Default | default | |
1 | Opaque | overrides opacitymap | |
2 | Blended | alpha overlay (requires an opacity map) | |
3 | Filter | filter the light (like glass) | |
4 | Chromakey | cut-out (requires a cut-out map) | |
5 | Additive | adds light (like fire and lights) |
Note: When using drawmode, for the best effect, you must draw different colors than what you intend to end up with in the end. For filter, you usually want to make sure all the colors are bright and pastel. For additive, you want to make sure all the colors are dark and earthy.
Animtype | Animation type of texture | ||
---|---|---|---|
animtype= | value | description | |
0 | None | None | |
1 | Scrolling | texture scrolls in direction of Animloop [ arg1="direction in degrees (0-360)" ] | |
2 | OneStrip | use a single Framestrip | |
3 | AllStrips | use a multi Framestrip | |
4 | RandomStrips | use a random Framestrip | |
5 | BrownianMotion | stochastic process* [ arg1="speed multiplier",animspeed="limiter"] | |
6 | RandomFrame | random frame order from Framestrip | |
7 | Swaying | Sways forward and back | |
8 | FrameLoop | loop between two frames [ arg1="start frame",arg2="end frame" ] | |
9 | SingleFrame | undocumented, Manually scale texture (extract frame or tile) [ arg1="scale height integer",arg2="scale width integer",animspeed=inset (useage unknown)] |
brownian motion = stochastic process [ steps (in both x and y directions) are independent normal random variables ]
Animloop | Direction of animation and frame counting | ||
---|---|---|---|
animloop= | value | description | |
0 | Forward | textures/frames loop forward | |
1 | Reverse | textures/frames loop backward | |
2 | Alternating | textures/frames see saw back and forth |
numframes | number of frames per Framestrip |
---|---|
numframes= | int |
numstrips | number of Framestrip’s in texture |
---|---|
numstrips= | int |
animspeed | animation speed , frames/scrolls per second |
---|---|
animspeed= | int |
animarg | argument1 to pass to animtype |
---|---|
animarg= | int |
animarg2 | argument2 to pass to animtype |
---|---|
animarg2= | int |
Some values are clamped (limited) if you enter invalid values, or they aren’t yet configured.
For example, angles of scrolling/swaying are clamped between -180 degrees and 180 degrees.
The minimum resolution/increment for values is usually 0.01.
image format
Example of an image using framestrips.
frames | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
framestrip-01 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
framestrip-02 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
Framestrip example: http://rumental.com:8000/therewiki/numtest.jpg
(dead link)
- Frame width = image width / numframes
- Frame height = image height / numstrips
Syntax:
I beleive all Constants are Global, therefore you can use the name or the number in TsFiles. Numeric values are preferred
modelSettings = {
materialname = {
colormap = "dir/colormap.jpg",
opacitymap = "dir/colormap.jpg",
cutoutmap = "dir/colormap.jpg",
filtermode = "int",
lit = "bool",
twosided = "bool",
drawmode = "int",
animtype = "int",
animloop = "int",
numframes = "int",
numstrips = "int",
animspeed = "float",
animarg = "float",
animarg2 = "float",
},
},
Sample TS file structure ( for in-world rendering )
Frame Animation
PIECE
{
name = "objectname",
id = "devxxxxxxxxx",
model = "test/animation/tester.model",
modelSettings = {
[ "test" ] = {
colormap = "test/animation/numtest.jpg",
opacitymap = "test/animation/numtestopacity.jpg",
lit = 0,
twosided = 0,
animtype = 3,
numstrips = 2,
numframes = 16,
animspeed = 1,
animloop = 0,
},
},
sinkToGround = dropOnTop,
layoutClass = "Structures",
}
CONTENTS
{
{ "devxxxxxxxx", 1 },
}
Scrolling Animation
PIECE
{
name = "objectname",
id = "devxxxxxxxxx",
model = "test/animation/tester.model",
modelSettings = {
[ "test" ] = {
colormap = "test/animation/numtest.jpg",
opacitymap = "test/animation/numtestopacity.jpg",
lit = 0,
twosided = 0,
animtype = 1,
animspeed = 1,
animloop = 0,
},
},
sinkToGround = dropOnTop,
layoutClass = "Structures",
}
CONTENTS
{
{ "devxxxxxxxx", 1 },
}
- names and dev# have been obscured.
Sample Preview file ( for testing in There Previewer )
Thanks to TheChaz for his intuition, and discovery of this method
If you test a model in the There Previewer and then click file save, you can save a preview file that stores all the settings of your test instance.
These files are named with the file extension .preview and are basic text files composed of basic xml structured data.
If you edit these preview files with a text editor ( such as notepad ) and add the necessary parameters then you can test animation in the previewer by opening the preview file.
The zoetrope application by There_developer now automates this process.
xml uses nested tags to designate heirarchy and dependancy.
A typical “tag” looks like this <tagname>value</tagname>
The format for the animation paramaters is as follows.
<drawmode>int</drawmode>
<animtype>int</animtype>
<animloop>int</animloop>
<numframes>int</numframes>
<numstrips>int</numstrips>
<animspeed>float</animspeed>
<animarg>float</animarg>
<animarg2>float</animarg2>
and should be located inside the <material>
tag for the material you are animating.
Sample preview file
<Preview>
<Model>C:\Program Files\There\ThereClient\Resources\drink\m004dr_mugclear01.model</Model>
<Material>
<Name>liquid</Name>
<colormap>Program Files\There\ThereClient\Resources\drink\t002dr1b_hotblues.jpg.dds</colormap>
<lit>1</lit>
<twosided>0</twosided>
<drawmode></drawmode>
<animtype>1</animtype>
<animloop>1</animloop>
<animspeed>10</animspeed>
<animarg>90</animarg>
<animarg2></animarg2>
<numframes></numframes>
<numstrips></numstrips>
</Material>
<Material>
<Name>glass</Name>
<colormap>Program Files\There\ThereClient\Resources/drink/t002dr_glassmug.jpg</colormap>
<opacitymap>Program Files\There\ThereClient\Resources/drink/t002drxx_glassmugalpha.jpg</opacitymap>
<lit>1</lit>
<twosided>0</twosided>
</Material>
</Preview>
Downloadable version of this file
you may have to right-click save as if your browser shows it as text
Files
Test files for frame animation ( unzip to c:\ for preview file to work )
WORKING EXAMPLES
This is a working example of Georgieanna’s Outdoor Swimming Pool
It makes the water move slowly.
All parameters are included for you to play with.
Replace the file C:\Program Files\There\ThereClient\Resources\fu\80268641.ts
with this text.
Restarting the There client is necessary for your changes to take affect.
PIECE
{
name = "Outdoor Swimming Pool",
id = "dev80268641",
model = "fu/80268641.model",
modelSettings = {
[ "Mtl #1" ] = {
colormap = "fu/80268641_1.jpg",
},
[ "Mtl #2" ] = {
colormap = "fu/80268641_2.jpg",
},
[ "Mtl #4" ] = {
colormap = "fu/80268641_3.jpg",
opacitymap = "fu/80268641_4.jpg",
drawmode = 0,
animtype = 1,
animloop = 0,
numframes = 0,
numstrips = 0,
animspeed = .3,
animarg = 0,
animarg2 = 0,
},
},
sinkToGround = dropOnTop,
layoutClass = "Structures",
}
CONTENTS
{
{ "dev80268641", 1 },
}