Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
3 registered members (Ayumi, NewbieZorro, TipmyPip), 13,888 guests, and 6 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Terrains per script verbinden #146180
08/06/07 17:30
08/06/07 17:30
Joined: Feb 2005
Posts: 3,687
Hessen, Germany
T
Tempelbauer Offline OP
Expert
Tempelbauer  Offline OP
Expert
T

Joined: Feb 2005
Posts: 3,687
Hessen, Germany
hi

das wollt ich schon länger mal fragen, jetz denk ich dran:
ist es möglich terrains im spiel per script zu verbinden (ähnlich wie die WELD-option bei vertices in med)?
mein ziel: ich will mehrere terrains zu einer spielbaren welt verbinden.

und nochwas: gibts ne möglichkeit in terrain-editoren wie MED oder Nems Terrain generator ein bereits fertiges terrain als "geist" hinzuzufügen um die ausrichtung und position von vertices am aktuellen terrain anzupassen?

danke

Re: Terrains per script verbinden [Re: Tempelbauer] #146181
08/06/07 18:45
08/06/07 18:45
Joined: Jul 2006
Posts: 26
Germany,Stuttgart
JoeIII Offline
Newbie
JoeIII  Offline
Newbie

Joined: Jul 2006
Posts: 26
Germany,Stuttgart
Hallo Tempelbauer!
ich wollte so etwas ähnliches auch mal machen. Dabei hab ich meine Highmap (.BMP) in mehrere bmp aufgeteilt. Danach passten die Teile nicht mehr zusammen. Auf der HP Silent-Design Community fand der Moderator eine Lösung.
Link:
http://www.e-nicmar.de/community/new_nuke/index.php?module=pnForum&func=viewtopic&topic=758

Falls der direktlink nicht funktioniert gehe auf die HP unter Forum - Anfängerfragen - Seite 3 - 1024*1024 Bmp aufteilen für Higmap?

Ich hoffe das Hilft
Gruß Jörg


Carpe Diem
Re: Terrains per script verbinden [Re: JoeIII] #146182
08/07/07 12:22
08/07/07 12:22
Joined: Oct 2002
Posts: 4,753
Munich, Bavaria, South of Germ...
TripleX Offline
Expert
TripleX  Offline
Expert

Joined: Oct 2002
Posts: 4,753
Munich, Bavaria, South of Germ...
Grundsätzlich ist das schon möglich, wenn auch nicht enorm schnell.
Was wichtig ist, du solltest wissen, was für Terrains nebeneinander gehören.

Der einfachste Weg (also einfach Rand-Vertics auf die gleiche Höhe bringen) ist nicht wirklich komplex.
Über eine Funktion einfach z.B. Rechte Seite von Terrain A mit der Linken Seite von Terrain B vergleichen und die Vertices auf den Mittelwert setzten.
Schwerer wird es wenn du wirklich einen sanften Übergang machen willst. Dann musst du halt auch die z.B. 5 äußersten Vertices statt nur den einen äußersten Untersuchen.

Ich habe da selber mal eine Funktion geschrieben. Kannst sie sicher nicht genau übernehmen.. Aber als Anhaltspunkt:

Code:


//jetzt randvertices verbinden..
GEdit_c = 0;
GEdit_d = 0;
GEdit_a = 0;
while(GEdit_d < GEdit_Abs_ters[1]) //abs_ters = wieviele Terrains gibt es in Y Richtung
{
while(GEdit_c < GEdit_Abs_ters[0]) //Terrains in X Richtung..
{
//entitys bekommen
GEdit_Terrain_Oben = GEdit_FindTerrain(GEdit_c+1,GEdit_d,GEdit_Abs_ters[0]); //Findet Pointer von dem Terrain drüber
GEdit_Terrain_Unten = GEdit_FindTerrain(GEdit_c-1,GEdit_d,GEdit_Abs_ters[0]); //findet Pointer von dem Terrain drunter
GEdit_Terrain_Links = GEdit_FindTerrain(GEdit_c,GEdit_d-1,GEdit_Abs_ters[0]); //Findet Pointer von dem Terrain Links
GEdit_Terrain_Rechts = GEdit_FindTerrain(GEdit_c,GEdit_d+1,GEdit_Abs_ters[0]); //terrain rechts von dem Terrain in der Mitte
GEdit_Terrain_Mitte = GEdit_FindTerrain(GEdit_c,GEdit_d,GEdit_Abs_ters[0]); //terrain in der Mitte

GEdit_Terrain_GetSize(GEdit_Terrain_Mitte,GEdit_Terrain_Info);

if(GEdit_Terrain_Oben != 0) //falls oben eins ist
{
GEdit_a = GEdit_verts[1]; GEdit_b = 1; //Verts = Vertices in X/Y Richtung
while(Gedit_a <= GEdit_verts[1]*GEdit_verts[0])
{
vec_for_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_for_mesh(GEdit_temp1.x,GEdit_Terrain_Oben,GEdit_b);

result=temp.z; result=GEdit_temp1.z;
temp.z = (temp.z+GEdit_temp1.z)/2; //mittelwert

vec_to_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_to_mesh(temp.x,GEdit_Terrain_Oben,GEdit_b);
GEdit_a += GEdit_verts[1]; //immer eine Reihe weiter springen, da nur vertics oben bearbeitet werden sollen
GEdit_b += GEdit_verts[1];
}
} //usw. jetzt nur unten
if(GEdit_Terrain_Unten != 0)
{
GEdit_a = 1; GEdit_b = GEdit_verts[1];
while(GEdit_b <= GEdit_verts[1]*GEdit_verts[0])
{
vec_for_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_for_mesh(GEdit_temp1.x,GEdit_Terrain_Unten,GEdit_b);

temp.z = (temp.z+GEdit_temp1.z)/2;

vec_to_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_to_mesh(temp.x,GEdit_Terrain_Unten,GEdit_b);
GEdit_a += GEdit_verts[1];
GEdit_b += GEdit_verts[1];
}
}
if(GEdit_Terrain_Links != 0)
{
GEdit_a = 1; GEdit_b = GEdit_verts[0]*(GEdit_verts[1]-1)+1;
while(GEdit_b <= GEdit_verts[1]*GEdit_verts[0])
{
vec_for_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_for_mesh(GEdit_temp1.x,GEdit_Terrain_Links,GEdit_b);

temp.z = (temp.z+GEdit_temp1.z)/2;

vec_to_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_to_mesh(temp.x,GEdit_Terrain_Links,GEdit_b);
GEdit_a += 1;
GEdit_b += 1;
}
}
if(GEdit_Terrain_Rechts != 0)
{
GEdit_a = GEdit_verts[0]*(GEdit_verts[1]-1)+1; GEdit_b = 1;
while(Gedit_a <= GEdit_verts[1]*GEdit_verts[0])
{
vec_for_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_for_mesh(GEdit_temp1.x,GEdit_Terrain_Rechts,GEdit_b);

temp.z = (temp.z+GEdit_temp1.z)/2;

vec_to_mesh(temp.x,GEdit_Terrain_Mitte,GEdit_a);
vec_to_mesh(temp.x,GEdit_Terrain_Rechts,GEdit_b);
GEdit_a += 1;
GEdit_b += 1;
}
}
GEdit_UserOutputUpdate(vector("Connecting Terrains..","Generating...",NULL),nullvector,vector(0,-1,GEdit_a));

GEdit_a += 1;
GEdit_c += 1;

wait(1);
}
GEdit_c = 0;
GEdit_d += 1;
}



Ich hoffe das kann halbwegs helfen,
mit freundlichen Grüßen,
Timo

Last edited by TripleX; 08/07/07 12:25.

Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1