• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

View in 3D

Status
Not open for further replies.
Level 29
Joined
Jul 29, 2007
Messages
5,174
That's why I asked, are WC3 lights dynamic? I don't remember stuff changing brightness in the game.
There are no lights in GL above 1.5 either (in proper code that is), but it's easy to make them.

What is the direction of directional lights? the rotation of the node?
Omni lights are point lights?
Not sure what's even the point of ambient lights, seeing how every light type has ambient...

Is there a restriction to the number of lights?
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
GhostWolf, I would love to help you. Please tell me which files in which MPQs you want access to.

All of them, the same exact thing you did for the WC3 MPQs.
I am assuming you have a map between file paths to the owning MPQ? if so, you can just add all the SC2 files to this map.

Some sort of access to the resource section could also be nice.
 
That's why I asked, are WC3 lights dynamic? I don't remember stuff changing brightness in the game.
There are no lights in GL above 1.5 either (in proper code that is), but it's easy to make them.

What is the direction of directional lights? the rotation of the node?
Omni lights are point lights?
Not sure what's even the point of ambient lights, seeing how every light type has ambient...

Is there a restriction to the number of lights?

can be easily make with a shader using Blinn-Phong model, just no specularity should be calculated.

Attuanation, in the case of Omni and Directional should be linear.

Yeah, Omni Lights are kinda point lights.

The directional have their start direction vector on 0,0,-1. You should rotate it afterwards.

Ambient lights are used for defining global lighting, they are actualy two models.

If you want in-game examples, look at fire torches and set game time to night.

Btw let's try this model on your M3 Viewer:

(erm what was the url to set this up?)
 

Attachments

  • Abomination Sc2.m3
    289.8 KB · Views: 230
  • Decal_StarToolsTutorial_0000_01.dds
    85.5 KB · Views: 35
  • HeroAbomination_diff.dds
    256.1 KB · Views: 40
  • HeroAbomination_Mask.dds
    256.1 KB · Views: 38
  • HeroAbomination_normal.dds
    341.5 KB · Views: 35
  • HeroAbomination_Spec.dds
    256.1 KB · Views: 33
  • TeamGlow.dds
    1.1 KB · Views: 43
Level 29
Joined
Jul 29, 2007
Messages
5,174
Fails miserably.
The sequences in this model have the second variation, and the vertices fail too, probably because they use multiple UV sets.
Oddly checking the vertex flags doesn't give me the same results as the reference you linked me says in the model you linked the flags have the desired values, so I guess the model I was using is of an older version (which makes perfect sense). Following this, it seems like pretty much every chunk has a different layout for this model.

Is there a way to check for the file version or something like that? libm3 says it's the second member of MODL, but that's for MD33 Ops, forgot I have a version variable in the index entries. Guess it's time to use it.
 
Yeah that was when I was like wtf. It looks like Blizzard changed the format further for Star Tools. I exported that model using lastest public version of the star tools. All the chunk/reference tags and entries are at the very end. I imagine they do that for reading the whole model faster.

Multiple UV, I think only the Decal shoulder plate uses multiple UVW, the rest uses just one map.
 
Ok, now both work.
http://www.hiveworkshop.com/model_v.../129127d1378860539-view-3d-abomination-sc2.m3

Now time to see how exactly to load DDS images.

/Edit

Added support for DDS DXT1/3/5.
Since there is no access to all the MPQ files, only this model will work.

Want me to convert some Wc3 models for examples shake? I can add them different set of layers and remake properties more Sc2 style. I'm very interested on making a Sc2 version of the Water Elemental which uses in-game water textures and has enviroment and reflective maps.

Btw, you may need to prepare changes to the animation engine, since Sc2 uses Track Sets and you can merge animations in it. That's how they make in FPS shooter maps to make a unit walk left and still keep upper body on Stand Ready position. (or Attack).

EDIT:
this.unknown6Layer = parseSingleReference(reader, entries, Layer);
this.unknown7Layer = parseSingleReference(reader, entries, Layer);

those are LightMap and Ambient Occlussion.

In this:

this.tintFlags = Uint32(reader); // 0x1 useTint or inverseTint ??
// 0x2 tintAlpha or tint ??
// 0x4 use the color values from the ainmation reference
this.tintStrength = Float32(reader);
this.tintStart = Float32(reader);
this.tintCutout = Float32(reader);

those are Fresnel Effects not really a tint. Normaly used for adding edge effects to models or make reflective capes over models like in tassadar's case.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Stop sniffing my code!
No really, continue if you have more unknown stuff.
I have no idea what Fresnel effects are, but that's for later on.

For now I finally applied bind pose...animations would hopefully follow.

If you see room for improvements in the code, do tell (and I am still looking for a good name to our lovely fellow BAT, because "Batch" doesn't really hit the spot (as in, has nothing to do with it)).

New models aren't really needed yet (for testing), since I am only using such a small part of the format right now anyway. Hopefully I'll get full access to the MPQs soon enough.
 
Stop sniffing my code!
No really, continue if you have more unknown stuff.
I have no idea what Fresnel effects are, but that's for later on.

For now I finally applied bind pose...animations would hopefully follow.

If you see room for improvements in the code, do tell (and I am still looking for a good name to our lovely fellow BAT, because "Batch" doesn't really hit the spot (as in, has nothing to do with it)).

New models aren't really needed yet (for testing), since I am only using such a small part of the format right now anyway. Hopefully I'll get full access to the MPQs soon enough.

Sniff, Sniff, they see me sniffing, they hating xD.

this.volumeMaterials = parseReference(reader, entries, VolumeMaterial);
this.unknown19MaybeRef = new Reference(reader);
this.creepMaterials = parseReference(reader, entries, CreepMaterial);

the unknown is a VolumeNoise Material

I think I'll remake your parser in maxscript, that way I can find all the unknowns.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Seems like I am not applying bind pose correctly, but I have no idea how to do it. Tried all sorts of variations with the bone lookup table, IREF matrices and the initial values of the bones.
I didn't construct a bone hierarchy so far, because for the two current models the children are always after the parents. I can't tell from only these two models if this is a rule (and it should be) or coincidence.

Also, what are volume noise materials? got a structure?

// Edit

Looks like it's fixed.
It appears like the correct matrix multiplication order is Bone * IREF, rather than the opposite.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
So far they seem pretty much the same thing, except for IREF and the initial values replacing the pivot points.

Models that can be tested right now:
http://www.hiveworkshop.com/model_viewer/sc2/?p=Abomination Sc2.m3
http://www.hiveworkshop.com/model_viewer/sc2/?p=Anathema.m3
http://www.hiveworkshop.com/model_viewer/sc2/?p=Baneling.m3

By the way, in case you didn't notice, you can add &d to the address to get debug data in both viewers (where debug data = the parser and the model structures).
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Added basic support for animations.
Very unoptimized, but that's for later on.

No weird snapping in the M3 abomination, where did they disappear to? (what's different?)

/Edit

Added interpolation types (seems like there's only none and linear?), animation speed and looping modes.
 
Last edited:
Added basic support for animations.
Very unoptimized, but that's for later on.

No weird snapping in the M3 abomination, where did they disappear to? (what's different?)

/Edit

Added interpolation types (seems like there's only none and linear?), animation speed and looping modes.

they probably have bezier, hermite, noise and other types, but they export models in linear for game engine optimization reasons. Interpolating both bezier and hermite is 2 to 4 times more costy than linear.

Hmm in the abomination M3, Glstand is not playing correctly and second, it should be merged to every other animation, except birth and death. (It's Sc2's way of global animations)

You should also change the ui for something more like sc2's previewer, where you define animation layers and you can merge animations with splitbody animstions (different tracksets playing)
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Yeah I know I should use GLstand as a global animation. What do you mean about it not playing correctly though?

I have no idea how the SC2 previewer looks like.
Where can you define animation blending? I can only think of Sequence::runsConcurrent being relevant, though I am not sure how that would fit.
I am guessing STG is used for some sort of animation sequences (e.g. play animation X, then Y, then Z) or blending if the sequences have runsConcurrent.

/Edit

Added team colors.
 
Last edited:
I got a perfect sample with documentation.

attachment.php


The sample is the splitbody tutorial sample from Star Tools.

I suggest you read Star Tools Documentation found here: Documentation and Tools. The specific chaper is Tutorial -> Advanced -> SplitBody Animations.

Remember in your design that not only bone transformations can be affected. Every animateable property can be split, including material/layer animations and light/particle/ribbon/projector animations.

You'll have to keep looping the animation blocks, so remove the nonlooping option.
 

Attachments

  • WaterBat_Spec.dds
    682.8 KB · Views: 50
  • WaterBat_Norm.dds
    1.3 MB · Views: 40
  • WaterBat_Envio.dds
    682.8 KB · Views: 33
  • WaterBat_Emis.dds
    682.8 KB · Views: 55
  • WaterBat_Diff.dds
    1.3 MB · Views: 47
  • Reflection_StarTools.dds
    4 MB · Views: 41
  • Waterbat_SplitBodyAnimations_Tutorial01_Start.m3
    310.4 KB · Views: 47
  • WaterbatPreview.jpg
    WaterbatPreview.jpg
    236.5 KB · Views: 153
Actualy, the only thing I did for the previwer was explicitly add an animation layer. GlStand, GlBirth, GlDeath are automatically added as animation layers. I think TrackSets are TransformationGroups in your data, however, I can't find the priority value in there. It must be an unknown somewhere in there.

The names Walk_Full and Walk_LowerBody, weren't extracted from the previewer but I got them using a hex editor on the model file. (well i knew them from 3dsmax as well, but they were defined there in different format)

The thing is that Wc3 ran in one animation layer always, therefore your design is set to run animations assuming that. In Sc2 you must keep running all the set animation layers and restart them after they end.

Why is it that they must be in the previewer?

Well simple, there's actually no global animations in Sc2. They are just track sets with very high priority that run over every animation in their definition (glstand affects all animations except deaths, decays and births), (gldeath affects all death and decay), (glbirth affects all birth). So implementing both behaviors will automatically kill two birds one shoot.

I know this sounds complex, but if you achieve that, people will be able to preview any model, even models made specificly for FPS/RPG/MMORPG maps which would be filled with SplitBody animations.

The only problem I see with this is that you may need to completely refactor the way you play animations. Normaly you should start with one animation layer (main animation) and allow people to add other animation layers, then play them looping each layer as it ends. Plus, you must add automatically global animation layers to the main animation.

How animation layers work? Well it's not really a blending of transformations, you just pick a track set with highest priority for the bone.

Also another note, youshould implement blend time, so when an animation layer ends, instead of resetting every transformation from the start, it would interpolate the end of the layer to the start of the new layer.

The things turns easier if seen in this perspective:

When playing multiple animation layer, you enumerate each trackset and order them by priority. You select a trackset for a set of bones/objects from the higher priority, if you have bone/objects without a selected trackset, you repeat the process on the next trackset for the bones/objects without assigned tracksets. You keep repeating the process until you either ran out of tracksets or no bone/objects need any tracksets. Finally you play the animation layers and apply transformations to a bone according to their picked trackset
 
Well for the time being let's go slow.

Look at the sample I posted on Walk animation. You'll notice only the lower body is moving, that's because the lowerbody uses the trackset Walk_LowerBody and the rest uses Walk_Full, you must blend those two track sets in order to play the animation correctly. Blending is done according to priority. Notice that trackSet LowerBody only uses Rotation on bones, this means that for Position and scale, you must get them from the lower TrackSet. Also LowerBody is only defined for Root and bones in legs and pelvis. Root has Position and Rotation set on unlike the rest.

EDIT: Found that the last parameter in the bone is actualy the visibility anim reference.
Code:
	struct Sc2Bone (
		version,
		unknown0,
		name,
		flags,
		parent,
		unknown1,
		location,
		rotation,
		scale,
		visibility
	)

EDIT2: hmm checking the vertex structure, It appears to be obviously incomplete. Vertices can hold vertex color as well. I know it's used for particle emitters that emit on the surface of a mesh, mainly used in cinematics. Maybe the there's a different structure if the correct evil flags are set on purpose.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
Just now saw that the walk STG has two references to STC (Walk_LowerBody and Walk_Full obviously), so they are used for blending like I guessed. I'll use the STGs from now on.

Seems like I'll need to use deferred rendering for this viewer, since it's what Blizzard used. Never used it so far, guess I'll learn new things (or fail).
 
Last edited:
Yeah I already found it, though I never used deferred rendering in general so far.

If you got any extra information on the rendering engine would be nice to know. Learning that it used deferred rendering made me understand many weird flags concerning transparency and opacity maps problems.

I'll finish reverse engineering many things soon. I just need to finish the maxscript reader. I already got a function for backtracking structure comparisons with dynamic inspection to compare changes in two models.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Animations now go through STGs properly.

Also added some bad looking lighting and specularity, though it has nothing to do with the data in the materials (that will wait until I get to deferred rendering I guess).

/Edit

Forgot to actually post the link to the Waterbat (it can be accessed with the full url too of course):
http://www.hiveworkshop.com/model_viewer/sc2/?p=Waterbat.m3

By the way, the GLstand in the abomination model has priority 0, so I don't think priorities are used for the global sequences.
 
Last edited:
Animations now go through STGs properly.

Also added some bad looking lighting and specularity, though it has nothing to do with the data in the materials (that will wait until I get to deferred rendering I guess).

Nice work man, have a coockie rep+. Really love the effects, atleast they don't look too wc3 anymore, they look more Sc2 like.

Mind if I try some evil models?

Ahem, I'll leave this link here, hate rewritting it all the time:
http://www.hiveworkshop.com/model_v...nt.php?attachmentid=129192&stc=1&d=1379076637

Test1:
http://www.hiveworkshop.com/model_v...erbat_splitbodyanimations_tutorial01_start.m3

Test2:
http://www.hiveworkshop.com/model_v...7/129193d1379076629-view-3d-darktemplar_00.m3

Test3:
http://www.hiveworkshop.com/model_v...sion-97/129194d1379076629-view-3d-colossus.m3

Edit Result: Test2 and Test3 crash the viewer after a while.
 

Attachments

  • darktemplar_specular.dds
    170.8 KB · Views: 57
  • darktemplar_normals.dds
    341.5 KB · Views: 60
  • darktemplar_normal.dds
    1.3 MB · Views: 99
  • darktemplar_emissive.dds
    682.8 KB · Views: 51
  • darktemplar_diffuse.dds
    341.5 KB · Views: 57
  • immortal_diffuse.dds
    1.3 MB · Views: 46
  • immortal_emissive.dds
    1.3 MB · Views: 59
  • immortal_normal.dds
    1.3 MB · Views: 56
  • immortal_placement.dds
    42.8 KB · Views: 72
  • immortal_specular.dds
    682.8 KB · Views: 72
  • colossus_spec.dds
    682.8 KB · Views: 61
  • colossus_normal.dds
    1.3 MB · Views: 49
  • colossus_emiss.dds
    1.3 MB · Views: 53
  • colossus_diffuse.dds
    1.3 MB · Views: 57
  • colossus_carrier1.dds
    1.3 MB · Views: 74
  • Immortal.m3
    596.9 KB · Views: 97
  • DarkTemplar_00.m3
    360.9 KB · Views: 64
  • Colossus.m3
    525.3 KB · Views: 96
Level 29
Joined
Jul 29, 2007
Messages
5,174
Well not sure if we are talking of the collosus or not, but here are Collosus TrackSetGroups:

Code:
ImportedModel.sequenceTrackSetGroups.count
26
tsg = ImportedModel.sequenceTrackSetGroups
for t in tsg do print (t.name + ": " + (t.stcIndices as string))
"Stand: #(0)"
"Walk A: #(1)"
"Walk B: #(2)"
"Walk C: #(3)"
"Walk D: #(4)"
"Walk E: #(5)"
"Walk F: #(6)"
"Walk G: #(7)"
"Walk H: #(8)"
"Walk I: #(9)"
"Walk J: #(10)"
"Walk K: #(11)"
"Walk L: #(12)"
"Walk M: #(13)"
"Walk N: #(14)"
"Walk O: #(15)"
"Walk P: #(16)"
"Attack Ready Channel: #(17, 18)"
"Attack 02: #(19, 20)"
"Stand 01: #(21, 22)"
"Stand Channel: #(23, 24)"
"Stand 02: #(25, 26)"
"Stand 03: #(27, 28)"
"Walk: #(29, 30)"
"Stand Channel Start: #(31, 32)"
"Stand Channel End: #(33, 34)"
OK

Those numbers say which trackSets (stc in ur language) should be used. In the collosus only. Surprisingly the animations which are bugging are those which use two tracksets. I think you already know this since you fixed the waterbat using that.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Yeah you can see all that data with &d, I must be handling something in a wrong way.

In fact, for some reason, even though I test both the animFlags of the animation reference header (libm3 says it has to be 6 if there is animation data) and the STS for the matching animId, it looks like I keep going to the failsafe that returns the initial values (in the Skeleton::getAnimatedValueFromSTC function if you are looking at my code).
Not really sure why, but it seems to happen in all animations.

Can't say I see anything wrong with the code. Tried a couple of other variations but nothing makes the animations look correct.

In fact I just tested with only STC 30 (Walk_full) enabled and it doesn't move anything.
 
Last edited:
Yeah you can see all that data with &d, I must be handling something in a wrong way.

In fact, for some reason, even though I test both the animFlags of the animation reference header (libm3 says it has to be 6 if there is animation data) and the STS for the matching animId, it looks like I keep going to the failsafe that returns the initial values (in the Skeleton::getAnimatedValueFromSTC function if you are looking at my code).
Not really sure why, but it seems to happen in all animations.

Can't say I see anything wrong with the code. Tried a couple of other variations but nothing makes the animations look correct.

I think those flags or for something else.

You should look if the animId is 0. If it's 0 or not found then it's not animated in that sequence.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Look at edit above. Walk_full doesn't actually affect anything, so I am not sure how it's supposed to run.

On an unrelated subject, can you upload new textures for the ground and sky to fit SC2 better?

/Edit

Oops! Apparently the draw_buffers extensions, which allows to write to multiple rendering targets at the same time is still a draft for WebGL, and although Google says it *should* work for Angle (aka Chrome), it doesn't seem to.

The other path is to render the scene multiple times with different shaders, but that's pretty bad...I'll see if I'll do it.
 
Last edited:
Should I apply GLbirth for any sequence with the string "birth" in it, GLdeath for "death", and GLstand for sequences with neither?

Yeah but, you must run them in a different animation layer. So when they end they start over.

Btw did you look at this article by any chance: http://www.dartgamedevs.org/2013/07/multiple-render-targets-and-deferred.html

This guys got a functional library that supports m3, probably they provided a deferred rendering mechanism and can process all maps: https://github.com/johnmccutchan/spectre

Ever tried Tree.js is a library for making shit with webgl a bit easier:

Referred Rendering does seem to be possible as shown in this demo: http://threejs.org/examples/webgldeferred_pointlights.html (hmm tree.js? sounds familiar, maybe i used it once, need to look at old projects)

Btw I think Sc2 uses Lambert shading instead of Phong shading model for lighting. There's a parameter for materials called Double Lambert.
 
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
I saw that Dart thing while googling too, but it isn't JS (yet another JS-C++-Java-<Every language in existence> language made by Google?).

The actual WebGL extension (WEBGL_draw_buffers) is still in "draft" status...so basically I can't access it yet.
They sure do take their time to re-implement things that have been existing in OpenGL for the past...8+ years?

Of course I /can/ do deferred rendering, in fact I already did, it's just lame to do multiple geometry passes.
Now how to use the data I have, that's another question (per-pixel diffuse, normal, specular and depth values, but can't really see much in the depth image).
 

Attachments

  • Diffuse.jpg
    Diffuse.jpg
    121.4 KB · Views: 114
  • Normal.jpg
    Normal.jpg
    106.2 KB · Views: 110
  • Specular.jpg
    Specular.jpg
    113.9 KB · Views: 128
  • Depth.jpg
    Depth.jpg
    7.2 KB · Views: 129
Last edited:
Level 29
Joined
Jul 29, 2007
Messages
5,174
http://www.hiveworkshop.com/model_v...2170/Hive/wc3wowsc2/Complete/Human/Paladin.m3

This still does not work. Also, don't forget to add selection objects (HitTestFuzzy, etc.)

And it would continue not working, like I have already told you. Upload the model to anywhere on the Hive, or CORS (rather the same origin policy, but it's usually mistakenly referred to as CORS for some reason) would make it not work.

XMLHttpRequest cannot load file:///D:/Dropbox/Public/Hive/wc3wowsc2/Commit/Assets/Textures/Hammer_1H_Maul_B_02White.dds. Cross origin requests are only supported for HTTP.
 
Well I was able to reverse Enginneer a bit more data from materials and layers. mainly got all the flags and a few unknown values.

Code:
	struct Sc2StandardMaterial (
		version,
		name,
		specialFlags,
		-- 0x1 uses DepthBlend
		-- 0x4 use Vertex Color
		-- 0x8 use VertexAlpha
		-- 0x200 uses Transparent Shadows
		flags,
		-- 0x1 use vertex Color
		-- 0x2 use vertex Alpha
		-- 0x4 unfogged
		-- 0x8 twoSided
		-- 0x10 unshaded
		-- 0x20 No Shadows Cast
		-- 0x40 No HitTest
		-- 0x80 No Shadows Received
		-- 0x100 Z Fill Pass
		-- 0x200 useTerrainHDR
		-- 0x800 splatUVfix
		-- 0x1000 softBlending
		-- 0x4000 Transparent Shadows
		-- 0x8000 Decal Lighting
		-- 0x10000 Transparency affects depth based effects
		-- 0x20000 Enable local lights on transparencies
		-- 0x40000 Disable Soft (Depth Blend)
		-- 0x80000 DoubleLambert
		-- 0x100000 Hair Layer sorting
		-- 0x200000 Accepts Splats
		-- 0x400000 Decal required on low end
		-- 0x800000 Emissive required on low end
		-- 0x1000000 Specular required on low end
		-- 0x2000000 Accepts Splats Only
		-- 0x4000000 is background object
		-- 0x10000000 Z-Fill required on low end
		-- 0x20000000 Exclude from highlighting
		-- 0x40000000 Clamp output
		-- 0x80000000 visible
		blendMode,
		-- 0 Opaque
		-- 1 Blend
		-- 2 Additive
		-- 3 ? - probably AddAlpha
		-- 4 Mod
		-- 5 Mod2x
		priority,
		unknown1,
		specularity,
		depthBlend,
		alphaTestThreshold,
		unknown3,
		unknown4,
		unknown5,
		specMult,
		emisMult,
		diffuseLayer,
		decalLayer,
		specularLayer,
		glossLayer,
		emissiveLayer,
		emissive2Layer,
		evioLayer,
		evioMaskLayer,
		alphaMaskLayer,
		alphaMask2Layer,
		normalLayer,
		heightLayer,
		lightMapLayer,
		ambientOcclusionLayer,
		unknown8,
		layerBlendType,
		emisBlendType,
		emisMode,
		specType,
		unknown9AnimationRef,
		unknown10AnimationRef
	)

and layer:
Code:
	struct Sc2Layer (
		version,
		unknown0,
		imagePath,
		color,
		flags,
		-- 0x4 textureWrapX
		-- 0x8 textureWrapY
		-- 0x10 invertColor
		-- 0x20 Clamp
		-- 0x100 Use particle Flipbook
		-- 0x400 colorEnabled - use the color values from the ainmation reference
		uvSource,
		-- 0 Explicit Unwrap 1
		-- 1 Explicit Unwrap 2
		-- 2 Reflective Cube Env
		-- 3 Reflective Sphere Env
		-- 4 Planar Local Z
		-- 5 Planar World Z
		-- 6 Cubic Enviroment
		-- 7 Sphere Enviroment
		-- 8 ?
		-- 9 Explicit Unwrap 3
		-- 10 Explicit Unwrap 4
		-- 11 Planar Local X
		-- 12 Planar Local Y
		-- 13 Planar World X
		-- 14 Planar World Y
		-- 15 ScreenSpace
		-- 16 TriPlanar Local
		-- 17 TriPlanar World
		-- 18 TriPlanar World Local Z
		colorChannels,
		-- 0 RGB
		-- 1 RGBA
		-- 2 just A
		-- 3 just R
		-- 4 just G
		-- 5 just B
		RGBMultiply,
		RGBAdd,
		unknown1,
		unknown2,
		unknown3,
		replaceableChannel,
		-- -1 No replaceable
		-- 0 Channel 1
		-- 1 Channel 2
		-- 2 Channel 3
		-- 3 Channel 4
		-- 4 Channel 5
		-- 5 Channel 6
		-- 6 Channel 7
		unknown5,
		unknown6,
		unknown7,
		unknown8,
		unknown9,
		flipbook,
		uvOffset,
		uvAngle,
		uvTiling,
		unknown11,
		unknown12,
		brightness,
		unknown13,
		fresnelFlags, 
		fresnelStrength,
		fresnelStart,
		triPlannarOffset, --Vector3
		triPlannarScale --Vector3
	)

hope that helps out a bit. i still need to keep looking.

Flipbook works a bit weird. maybe we are missing something on reading
 
Status
Not open for further replies.
Top