Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
johnwhile

Normals Tangent Bitangent

Recommended Posts

Salve, come da titolo volevo chiedervi se qualcuno mi può spiegare cosa sono le tangent e bitangent nella computer graphic... in Max le normali sono facili da capire e da modificare, ci sono anche funzioni matematiche già preconfezionate come il Dot ecc...

Sono praticamente delle informazioni scritte per ogni vertice, le normali li sò calcolare correttamente ma non capisco a cosa servono e come si trovano quelle altre due componenti.

in internet ho trovato che sevono al normal mapping ma niente di più

Share this post


Link to post
Share on other sites

Utile il link con le formule matematiche... allora guardando l'algoritmo ho scritto quello che dovrebbe fare max:

(

	st = timeStamp()

	ClearListener()

	obj = geometry[1]

	Struct TANGENTI (t, 

	tang = for i=1 to obj.numVerts collect TANGENTI t:[0,0,0] b:[0,0,0]

	for f=1 to obj.numfaces do

	(

		face = getFace obj f

		v1 = getVert obj face.x

		v2 = getVert obj face.y

		v3 = getVert obj face.z


		tface = getTVface obj f

		w1 = getTvert obj tface.x

		w2 = getTvert obj tface.y

		w3 = getTvert obj tface.z


		q1 = v2-v1

		q2 = v3-v1


		s1 = w2.x-w1.x

		s2 = w2.y-w1.y

		t1 = w3.x-w1.x

		t2 = w3.y-w1.y


		det = 1.0/(s1*t2-s2*t1)


		xT = (t2*q1.x - t1*q2.x)*det

		yT = (t2*q1.y - t1*q2.y)*det

		zT = (t2*q1.z - t1*q2.z)*det


		xB = (-s2*q1.x + s1*q2.x)*det

		yB = (-s2*q1.y + s1*q2.y)*det

		zB = (-s2*q1.z + s1*q2.z)*det


		T= point3 xT yT zT

		B = point3 xB yB zB


		tang[face.x].t += T

		tang[face.y].t += T

		tang[face.z].t += T


		tang[face.x].b += B

		tang[face.y].b += B

		tang[face.z].b += B


	)

	for i=1 to tang.count do

	(

		tang[i].t = normalize tang[i].t

		tang[i].b = normalize tang[i].b

	)

	format "calcolato in % ms\n" (timeStamp()-st)

	for i=1 to tang.count do format "vert%:\tt = %\tB = %\n" i tang[i].t tang[i].b

)[/code]

Purtroppo max usa le funzioni per invertire le matrice e per moltiplicarle solo con matrici 4x3 cioè la classica matrix3, non sò se è più veloce usare quel metodo o fare tutte le operazioni singolarmente come in questo caso.

Secondo te è giusto ? non sono sicuro del calcolo di w1 w2 w3 per quel problema dellìordine diverso degli indici delle texture.

Share this post


Link to post
Share on other sites

sinceramente non ho guardato l'algoritmo, ma il problema del calcolo di w1 w2 w3 per il discorso degli indici direi che non dovresti avere problema se il modellatore ha lavorato spezzando la mesh dove necessario(oppure se alla fine risolvi quel problema con il tool di cui parlavamo nell'altra discussione)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...
Aspetta! x