Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Renegade

Alter Hase

  • »Renegade« ist der Autor dieses Themas

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

1

20.05.2014, 02:35

[Unity] NavMesh um ein Würfel

N'abend,

ich habe momentan ein Problem in Unity mit der Generierung eines Nav Meshs und weiß nicht mehr weiter. Ist es in irgend einer Weise möglich ein Nav Mesh zu generieren für rotierte Objekte wie zum Beispiel einer Plane die um 90° in der X Achse gedreht ist oder direkt für einen ganzen Würfel? Ziel ist eine Art "Würfel-Planet" mit Off Mesh Links über den Kanten des Würfels.

Hier mal ein Bild zur Verdeutlichung:


(Link)
Liebe Grüße,
René

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

20.05.2014, 06:40

Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Renegade

Alter Hase

  • »Renegade« ist der Autor dieses Themas

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

3

20.05.2014, 12:21

Ja sowas in der Art. Jedoch nicht mit Kästchen, sondern mit "normalen" Nav Agents die über ein Nav Mesh navigieren.
Liebe Grüße,
René

Renegade

Alter Hase

  • »Renegade« ist der Autor dieses Themas

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

4

22.05.2014, 22:53

Keiner eine Idee?
Liebe Grüße,
René

Julian Mautner

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

5

23.05.2014, 00:20

Es gibt so gut wie keine pathfinding plugins die für sowas ausgelegt sind...
Von daher würd ichs am ehesten umgehen indem ich die 3D oberfläche auf eine Ebene projiziert iere dort dann die navigationsberechnung durchführe und dann das ergebnis rücktransformiere. Nur als workaround idee...
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Renegade

Alter Hase

  • »Renegade« ist der Autor dieses Themas

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

6

23.05.2014, 01:39

Der Ansatz klingt sehr interessant. Kannst du das nochmal ausführlicher erklären? Gerade bezüglich "rücktransformieren" habe ich keine Idee wie ich das anstellen soll.
Liebe Grüße,
René

Renegade

Alter Hase

  • »Renegade« ist der Autor dieses Themas

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

7

24.05.2014, 15:00

So ich bin nun so weit, dass ich folgende Szene habe:


(Link)


Die farbigen Flächen sind der jeweiligen Anderen zugeordnet:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[System.Serializable]
public class WorldPathPair {
    public Transform worldPlane = null;
    public Transform pathPlane = null;
}

public class WorldPathPairs : MonoBehaviour {

    public List<WorldPathPair> worldPathPairs = new List<WorldPathPair>();

    public Transform GetWorldPlane(Transform pathPlane) {
        foreach (WorldPathPair wpr in worldPathPairs) {
            if (wpr.pathPlane ==  pathPlane) {
                return wpr.worldPlane;
            }
        }

        Debug.LogError("Can't find WorldPlane of Pathplane: " + pathPlane);
        return null;
    }
}


Wenn ich nun ein Ray auf eine World Plane schieße erhalte ich die dazugehörige Path Plane. Wie vollziehe ich nun aber die Umwandlung von dem getroffenen Punkt auf der World Plane zur Path Plane? Könnten mir Matrizen hier helfen?
Liebe Grüße,
René

Julian Mautner

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

8

24.05.2014, 17:16

Das schaut doch schon gut aus ;-) Überleg dir einfach wie du das mappen kannst... den genauen Algorithmus dafür musst du schon selbst entwerfen ;-) ^^
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Renegade

Alter Hase

  • »Renegade« ist der Autor dieses Themas

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

9

30.05.2014, 01:59

So ich bin nun einen Schritt weiter. Mittels einer MappingPlane und einem MappingPoint als Child kann ich via Methode abfragen welcher Punkt einer WorldPlane den Punkt auf einer PathPlane entspricht.


(Link)


Im Code nutze ich dann folgende Methode:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Vector3 TransformWorldToPath(Transform worldPlane, Vector3 worldPoint) {
        //set MappingPlane to the Pos/Rot/Scale of worldPlane
        mappingPlane.position = worldPlane.position;
        mappingPlane.rotation = worldPlane.rotation;
        mappingPlane.localScale = worldPlane.localScale;

        //set MappingPoint of MappingPlane
        mappingPoint.position = worldPoint;
        
        //get the PathPlane of the worldPlane
        Transform pathPlane = GetPathPlane(worldPlane);

        //set MappingPlane to the Pos/Rot/Scale of pathPlane
        mappingPlane.position = pathPlane.position;
        mappingPlane.rotation = pathPlane.rotation;
        mappingPlane.localScale = pathPlane.localScale;

        //return position of point
        return mappingPoint.position;
    }

public Vector3 TransformPathToWorld(Transform pathPlane, Vector3 pathPoint) { /* */ }


Als weiteren Schritt werde ich jetzt einen NavMeshAgent erzeugen der auf den PathPlanes wandert und seine Position für einen Charakter auf die Welt projiziert. Dabei stellt sich mir nun aber folgende Frage:
Wie löse ich das Problem mit den OffMeshLinks zwischen den Seiten der Welt? Die PathPlanes stehen ja räumlich völlig anders als die WorldPlanes (Es existiert z.B. ein Übergang zwischen der gelben und grünen Fläche). Kann ich in meinem Fall die OffMeshLinks überhaupt nutzen?
Liebe Grüße,
René

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Renegade« (30.05.2014, 02:08)


Werbeanzeige