Author Topic: Einfaches Beispiel?  (Read 11379 times)

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
Re: Einfaches Beispiel?
« Reply #15 on: March 14, 2011, 08:21:32 pm »
Das erste Problem muss bei dir liegen. Da kann nur box null sein.

Das zweite liegt daran, dass du nicht beliebig Dreiecke zu Objekten hinzufügen kannst. Die Konstruktoren von Object3D erfordern (sofern sie nicht ein anderes Object3D haben wollen) die Angabe der maximalen Anzahl Dreiecke. Mehr als das kannst du dann auch nicht ergänzen. Die Objekte die von Primitives kommen, sind bereits so gebaut, dass da nichts mehr ergänzt werden kann. Wenn du wirklich mit addTriangle arbeiten willst (der übliche Weg ist eher das Laden von fertigen Objekten, die in einem 3D-Editor erzeugt werden), dann solltest du dir besser ein eigenes, leeres Object3D mit new Object3D(<Dreieckanzahl>); erzeugen und dazu Dreiecke adden.
Ich gebe zu, dass die Fehlermeldung ziemlich unschön ist...es sollte besser irgend "Objekt ist schon voll" oder so heißen statt einfach mit ArrayIndexOutOfBoundsException auszusteigen...

Offline Empire

  • byte
  • *
  • Posts: 30
    • View Profile
Re: Einfaches Beispiel?
« Reply #16 on: March 15, 2011, 10:33:25 am »
Quote
Da kann nur box null sein.
Meinst du damit das es noch nicht inizjalisiert wurde?
Wenn ja, vor
Code: [Select]
box = Primitives.getBox(1f, 2f);wird sie es ja auch nicht und da funktioniert es.
Oder muss man das Objekt bei addTriangle()
irgend wie vorbereiten?

Danke werde es ausprobieren.
Warum ich mit addTriangle() arbeite hat einen
einfachen Grund. Ich kann zwar recht gut programmieren,
und neue Programiersprachen schnell lernen, aber
dafür bin ich was Künstlerisches angeht absolut unbegabt.
Zeichenen kann ich blos mit Bleistift und Geodreieck(dafür
kann man meinen Zeichnung als Blaupausen verwenden^^).
Als ich mit C ein 3D Spiel schreiben wollte hab ich die Welt
auf Karopapier gemalt und da die Koordinaten per Hand in
den Code übertragen.
Diesesmal schreib ich mir meinen eigenen Editor aber ich
kann die Koordinaten nur in einem Textfile speichern.
Deshalb muss ich das mit addTriangle() machen.

mfg
Empire

//EDIT:
Kann es sein das nicht nur die zwei Koordinaten-Achsen verdreht sind,
sondern auch die Sichtbarkeit bei Eckpunkten im und gegen den Uhrzeigersinn
verdreht ist?
« Last Edit: March 15, 2011, 10:36:00 am by Empire »

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
Re: Einfaches Beispiel?
« Reply #17 on: March 15, 2011, 08:43:23 pm »
Naja, irgendwo musst du box doch mal was zuweisen? Ich sehe das zumindest in deinem Codeschnippsel nirgends... ???

Die Koordinateachsen sind nicht "verdreht". Sie mögen ungewöhnlich gewählt sein, aber man kann ein Koordinatensystem definieren wie man will. Es gibt kein richtig oder falsch. Die Frage mit dem Culling verstehe ich nicht. Es ist so, wie es in jPCT eben ist. Wenn es für dein Objekt nicht passt, dreh es einfach um:
Code: [Select]
Object3D.invertCulling(true);

Offline Empire

  • byte
  • *
  • Posts: 30
    • View Profile
Re: Einfaches Beispiel?
« Reply #18 on: March 15, 2011, 09:06:20 pm »
Ok jetzt Funktioniert alles danke.

Ja das Achsenkreuz kann man definieren wie man will.
Ich wollte nur sagen das es ungewöhnlich ist(nicht wertend gemeint).
Und beim Culling meinte ich das so das ich bis jetzt es immer so gelesen
habe das ein Dreieck sichtbar ist wenn die Punkte im Uhrzeiger sind sind.
Und ich meinte auch, dass verkehrtherum nicht wertend.
Ich wollte blos wiesen ob es bei jPCT anderst herum ist oder ob ich einen
Fehler gemacht habe.

mfg
Empire

PS: Die Engiene ist echt genieal. großes Lob an alle beteiligten.