Vääntelin tässä hiihtolomalla alkuja VRC:n
keinotodellisuuden
ohjelmointi -kurssin harkkaan. Omaa tekoani siinä on sitten kaupungin
bitmapista nostava algoritmi, reitin suunnittelu ja skriptaus/ajoitus.
Cityscapen nosto on onnistunut hyvin, OpenGL on ollut helpompaa kuin
luulinkaan, vaikken ilmeisesti tajunnut käyttää heti GL_TRIANGLE_STRIP :ia
vaan vetelin rauhallisesti GL_QUADS:eja naamaan. Hjyvä minä.
Reitinsuunnitteluun pistinkin
PyGTK:n
käyttöön ja hyvää on ollut. Oikein herkkua glade-2:n kanssa. Todella nopea
proto ja muutenkin.. nnamm.
Siinä välissä löysin (kun projektiin tarvitsen) bezier -käyrän nopean
laskenta-tavan. Itsekin sitä jo joskus laskeskelin, enkä saanut kuin vähän
sitä lauseketta auki, olin silloin tosin vasta lukion ekalla.. Hannun
sivulla
on siitä sitten hyvä selostus. Muutenkin muutamia hyviä temppuja sen
sivuilla on näkynyt
olevan.
Näin kuriositeettina, tässä on se pätkä Python -koodia joksi hänen
C-koodinsa muuntautui (siis
todella vähän muutoksia,
puolipisteitäkään ei olisi tarvinnut poistaa:
def Bezier(p, steps):
t = 1.0/steps
temp = t*t
f = p[0]
fd = 3 * (p[1] - p[0]) * t
fdd_per_2 = 3 * (p[0] - 2 * p[1] + p[2]) * temp
fddd_per_2 = 3 * (3 * (p[1] - p[2]) + p[3] - p[0]) * temp * t
fddd = fddd_per_2 + fddd_per_2;
fdd = fdd_per_2 + fdd_per_2;
fddd_per_6 = fddd_per_2 * (1.0 / 3);
ret = []
for x in range(steps):
ret.append(f)
f = f + fd + fdd_per_2 + fddd_per_6
fd = fd + fdd + fddd_per_2
fdd = fdd + fddd
fdd_per_2 = fdd_per_2 + fddd_per_2
ret.append(p[3])
return ret
05/03/2003 @ 01:36
|
/anseli/vrc/
ogl
|
Kirj. 0
|
#