Skocz do zawartości

Featured Replies

Napisano

Witam.

Chcialbym zbudowac cala geometrie od podstaw.

Czyli mam dane wierzcholki (x,y,z, kolor) i potrafie z nich zbudowac face'y.

Budowa geometrii nie stwarza mi problemow, gdyz jakos to wyglada - gorzej jest z kolorami.

Z tego co wyczytalem w referencji max traktuje geometrie i kolory / textury calkiem osobno. I jak dobrze zrozumialem trzeba zbudowac dla tej geometrii siatke wierzcholkow i face'ow tylko ze dla kolorow, gdzie odpowiadajacym wierzcholkom z geometrii beda odpowiadaly wierzcholki kolorow, ktore zamiast [x,y,z] beda mialy [r,g,b].

No i mam problem z tymi kolorami - robie te wierzcholki koloru, nadaje im jakis kolor (i to dziala, bo jak sprawdzam edit mesha recznie, to mi tam pokazuje kolory wierzcholkow i sie zgadzaja z tymi, ktore wpisalem w skrypcie), ale juz przy renderingu tego nie ma.

Nie wiem teraz, czy musze zastosowac jakis model cieniowania samemu (np Gourauda), czy max sobie potrafi sobie sam z tym poradzic.

 

Pokaze to na najprostrzym przykladzie :

mam 3 wierzcholki [0,0,0], [20,0,0], [0,20,0]

z nich buduje mesh :

 

troj = mesh vertices: #([0,0,0], [20,0,0], [0,20,0]) faces:#([1,2,3])

 

Teraz nie ma ten mesh zadnych wierzcholkow koloru, poniewaz jak wpisuje

ile = getNumCPVVerts troj , to ile ma wartosc 0.

Dopiero po zastosowaniu defaultVCFaces troj ma ona wartosc 3, czyli tyle ile sie mozna bylo spodziewac.

Nastepnie ustalam jakies kolorki:

setVertColor troj 1 [0,0,0]

setVertColor troj 2 [255,0,0]

setVertColor troj 3 [255,0,0]

i wywoluje update troj.

No i mimo ze zmienilem kolory wierzcholkow, to zarowno w widoku jak i w renderze kolor sie nie zmienia. A z tego co myslalem powinien przechodzic od czerwonego do czarnego.

 

Co robie zle ? (mam nadzieje ze jakos to w miare wytlumaczylem :) )

  • Odpowiedzi 4
  • Wyświetleń 1,9k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

Po sekwencji setVertColor musisz dodac jeszcze

 

setVCFace troj 1 [1,2,3]

 

zeby zbudowac facea. Potem przypisz temu obiektowi standardowy kolor i teksture Vertex Color i zrenderuj powinno juz byc dobrze.

 

Przy kolorowaniu vertexow jest tak zamo jak z budowaniem mesha. Nie wystarczy okreslic vertexow trzeba tez podac ktory face jest zbudowany na ktorych face'ach.

Napisano
  • Autor

Faktycznie - przeoczylem tego face'a koloru.

Tylko dalej nic to nie dalo. Tzn nie rozumiem dokladnie dlaczego mam przypisac temu obiektowi jakis kolor ? Kolor tego face'a nie powinien byc budowany na podstawie kolorow wierzcholkow wchodzacych w jego sklad ?

Tzn moze bardziej po fachowemu: nie powinien sobie max majac kolory wierzcholkow wchodzacych w sklad face'a interpolowac calej powierzni face'a kolorami zaleznymi od kolorwo tych wierzcholkow ?

No i przypisanie textury Vertex Color - jak to zrobic i czy to jest potrzebne, skoro wogole tekstur nie mam zamiaru uzywac ? O ile zrozumialem na podstawie referencji Texture Vert i Color Vert sa uzywane zamiennie. Wiec w moim wypadku zostalyby uzyte tylko CV, gdyz chce tylko nadac obiektowi jakis kolor, a nie nakladac bitmape.

Chce okreslic kolor obiektu tylko i wylacznie na podstawie koloru wierzcholkow, gdyz tylko takie posiadam dane - [x,y,z,kolor].

Eh, cos mi sie wydaje ze cos mi umknelo podczas czytania tej refencji (chociaz juz przerobilem te rozdzialy o budowie mesha kilka razy) i cos zle zrozumialem :/.

Napisano

"Potem przypisz temu obiektowi standardowy kolor" - moje przejęzyczenie, chodziło o materiał (standardowy oczywiście).

Pisałem o Vertex Color bo bez niej nie wyswitelał mi kolorów przypisanych verteksom.

Napisano
  • Autor

Wielkie dzieki :D.

To jest wlasnie to o co mi chodzilo.

Wystarczylo dodac material , czyli jedna linijka kodu:

troj.material = standard diffuseMap: (Vertex_Color()) showInViewport:true

 

A przy okazji szukania tego znalazlem kilka fajnych rzeczy (m.in jak nadac rozne parametry cieniowania - wreszcie bede mogl zastosowac Phonga :D).

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności