[ glorius @ 31.08.2005. 12:52 ] @
1. Zelim da izrenderujem objekat i da animiram texturu na njemu ( translacija, rotacija i scale texture) i da pomeram taj objekat.

Code:

glMatrixMode(GL_TEXTURE);
glTranslatef(...)                       // pomerim malo texturu

glMatrixMode(GL_MODELVIEW);
glTranslatef(...)                       // pomerim malo objekat

render();



Ali ako stavim ovako nema pomeranja texture, samo objekta ( zbog menjanja STATE-a, mislim... ).

Kako iskombinovatio ove dve operacije sa mogu da pomeram objekat i da animiram texturu na njemu?

2. Bio sam na Frustum3D sajtu ( mislim da je ruski ) i skinuo sam code za SkinnedMesh. Radi super, ali maxscript file extenzije .mzp nece da radi kada aktiviram u MAX-u opciju Run Script da bih izveo svoj mesh sa Skin podacima.

Ljudi sa sajta kazu da je taj Plugin ( Script, sta vec ) koji dolazi sa kodom za MAX 4.2. Ja imam MAX 5. Da li Script nece da zbog verzije MAX-a ili ga moram pokrenuti na neki drugi nacin uz mozda neke dodatne uslove ( dodeljivanje Skin modifier-a - to sam vec probao ali nista se ne desava, ... )?

Inace skript se zove: ExportSkinnedMesh.mzp

Probao sam animaciju da izvezem pomocu obicnih kontrolera animacije ( FORCED SAMPLE ), ali vise mi se svidja ovo sa Skinned Mesh-om.


[ yooyo @ 31.08.2005. 13:39 ] @
Trebalo da da radi.

glMatrixMode(GL_TEXTURE) preusmerava rutine za rad sa matricama na texture matricu. Svaki sledeci poziv (glTranslate, glRotate, glScale, glMultMatrix) ce se dodati na postojecu matricu i ova matrica ce uticati na sve maping koordinate svih poligona koje budes iscrtavao. Matrica se ignorise samo ako je aktivirana neka of funkcija za generisanje maping koordinata (glTexGen).

btw.. da nisi pomerao texture po Z osi? (glTranslatef(0,0,N))

yooyo
[ SashaX @ 31.08.2005. 16:12 ] @
Kako ide ekvivalent tome u Direct3D-u, to sa transformacijama tex koordinata preko matrica?
[ Reljam @ 31.08.2005. 18:07 ] @
Pa, posto je buducnost u shaderima i prakticno sav nov hadver nema FFP (fixed function pipeline), resenje je da koristis shadere:

Code:

float4x4 texTransform;

VSOUT VertexShader(VSIN in)
{
    // Ovde uradis ono sto bi i inace uradio u shaderu
    ...

    // Prepostavka je da je texCoord0 float2, tako da moramo da ga castujemo
    // u float4 da bi transformacija radila.

    in.texCoord0 = mul(float4(in.texCoord0, 1, 1), texTransform);
    ...
}


E sada, ako bas posto-poto zelis da ovo sve uradis u FFPu, onda ti treba SetTransform(D3DTS_TEXTURE0, &matTransform);.

Ponavljam, mozda je FFP laksi za koriscenje, ali to je definitivno zastareli nacin pisanja D3D koda. Ako ovo radis da bi ucio D3D, bolje bi ti bilo da ucis ono sto ce i dalje postojati, a to su shaderi.
[ SashaX @ 01.09.2005. 00:08 ] @
Hvala!
Ja i ucim shadere to sam sa shaderom znao otprilike nego me je zanimalo sa FFP mada cu to raditi navjerovatnije sa shaderom da bude "usput" sa nekim efektima