Gitter auf Terrain

Posted By: Bone

Gitter auf Terrain - 05/05/10 11:13

Ich habe ein Terrain erstellt auf dem gebaut werden soll wie
z.B. in Anno , Siedler etc

Auf dem Terrain soll ein Gitter liegen das die Insel in Quadrate aufteilt.
Ein Gebäude nimmt z.B. 2x2 Felder ein

Jetz hab ich mir allerhand Funktionen angeguckt und mal durchs Forum gestöbert aber nichts gefunden was mir wirklich hilft.

Da die Kamera nicht nur von oben herab schaut kann ich Panel vergessen was natürlich sehr einfach gewesen wäre.

Wie kann ich an die Sache rangehen?
Ich kann ja ein Gitter zeichnen lassen aber
dann hab ich ein Problem , ich
wüsste nicht wie ich dann ordentlich an die Positionen komme an der auf der Welt geklickt wurde

Inspiriert mich bitte ein bisschen laugh
Posted By: Pappenheimer

Re: Gitter auf Terrain - 05/05/10 11:26

Du müsstest Dein Frage nochmal präziser formulieren.
Wahrscheinlich willst Du mehreres:
- einen Weg, festzustellen, wo hingeklickt wurde
- und eine optische Kennzeichnung des Gitters,
oder habe ich das falsch verstanden?

Was das Erkennen der Position angeht, wo Du mit der Maus hingeklickt hast, kannst Du die Funktion vec_for_screen, c_trace und vec_for_vertex verwenden. Über vec_for_screen und c_trace ermittelst Du die Position auf dem Terrain, das ja mit seinen Vertices bereits ein Gitter hat, mit vec_for_vertex stellst Du fest, welche Vertices des Terrains in der Nähe des Klicks ist.
Beispiele zu der Verwendung der Funktionen wie Du sie hierfür gebrauchen könntest, müssten im Handbuch unter den entsprechenden Punkten zu finden sein.
Posted By: Bone

Re: Gitter auf Terrain - 05/05/10 11:57



Das Grüne ist die Insel, auf der Insel soll ein Gitter sichtbar sein um die Baufläche zu markieren.

Ein Gebäude nimmt dann 2x2 Felder ein.
Meine Frage ist jetz wie ich ein sichtbares Gitter auf mein Terrain bekomme.
Dann brauch ich noch die Position von der Kachel auf der Geklickt wurde damit ich das Modell ausrichten kann.

Das Gitter soll natürlicher feiner sein als auf dem Bild, das dient nur zum veranschaulichen

Posted By: Espér

Re: Gitter auf Terrain - 05/05/10 12:00

wäre es nicht möglich dieses terraingrid via draw_line zu zeichnen.. und auf das terrain zu rendern??? (bräuchte auch sowas)
Posted By: Bone

Re: Gitter auf Terrain - 05/05/10 12:18

Mit draw_line3d könnte man es machen , aber wie krieg ich dann raus auf welcher Kachel geklickt wurde?
Posted By: Espér

Re: Gitter auf Terrain - 05/05/10 12:52

durch umrechnung...

Jede kachel wäre ja gleich groß...


damit wäre die kachel:

Kachel_x = mouse.x + map_camera_position_x / kaachelgröße_x
Kachel_y = mouse.y + map_camera_position_y / kaachelgröße_y

bzw.. mit der methode von pappenheimer..
Posted By: Widi

Re: Gitter auf Terrain - 05/05/10 12:56

Schau dir diesen Code an, der macht beinahe das was du willst:
AcknexTown
Posted By: Bone

Re: Gitter auf Terrain - 05/06/10 06:40

@Widi

Nicht wirklich, das Level besteht aus einzelnen Blöcken.
Diesen Weg bin ich schonmal gegangen, das platzieren von Gebäuden war auch einfach aber wenn ich ein Level aus solchen Blöcken zur Laufzeit erstelle dauert es für 100x100 Blöcke um die 5 Minuten und das ist wirklich wenig Platz für eine Wirtschaftssimulation und eine ziehmlich lange Ladezeit.
Zudem kommt dann das die Polyzahl schnell Zunimmt.
Ein generiertes Level sollte schon 250x250 Felder groß sein, das war vorerst mein Ziel welches ich schnell wieder verworfen habe.


Weiter zu meiner Sache.
Ich habe jetzt ein rechteckiges Modell erstellt, im WED auf einem Block gesetzt und dem Modell eine Action zugewiesen.
Diese Action sorgt bei Mouseover dafür das ein Gitter angezeigt wird. Das Gitter erstell ich mit draw_line3d().

Das Funktioniert wunderbar und sieht mit AntiAliasing auch akzeptabel aus.

Die Maße nehm ich von der Boundingbox(?) nachdem
ich diese angepasst habe mit c_setminmax

Hab ich aber eine Insel in L Form ist die BoundingBox doch trotzdem so breit wie die breitesten Enden des Modelles oder nicht? Ich zeichne ja nur ein Rechteck mit den längen der Enden

Das würde mir doch dann so ein Ergebis liefern:
Bild



Ich hab mal was gelesen über das austauschen von der Textur eines Modelles.
Weiss leider aber nicht mehr wo.

Wenn man die austauschen kann, kann man doch bestimmt auch eine Textur drauflegen.

Kann mir jemand sagen welche Funktionen ich da nutzen kann?

Das Mausklick Event wir nur ausgelöst wenn auf das Modell klicke und nicht schon bei der Boundingbox oder?
Wenn dem so ist hab ich die Daten schnell errechnet zum
bauen und hab mein Ziel erreicht laugh

Danke für die Unterstützung
© 2024 lite-C Forums