Bauteile zusammenbauen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bauteile zusammenbauen

    Hallo,

    ich bin neu hier und ein Anfänger was ue4 angeht. Ich möchte eine Applikation für die HTC Vive erstellen, wo ich ein Objekt (zum Beispiel ein Maschinenteil) mit einem anderen Objekt verbinde. Nehmen wir an da ist ein Tisch im Raum und auf diesem Tisch sind drei Objekte. Das Hauptobjekt soll mit den beiden anderen Objekten verbunden werden, quasi wie beim Lego. Falls aber Objekt2 an die falsche Stelle angebracht wird beim Hauptobjekt, soll eine Warnung geblendet werden und die jeweilige richtige Stelle, wo Objekt2 angebracht werden soll, soll markiert werden. Die Objekte kann ich mit den Motion Controllern bewegen und fassen, doch habe ich leider keine Ahnung wie ich zwei Objekte miteinander verbinden soll. Vielleicht mit einem Overlap Event?? Hat jemand ein Beispiel für mich??
  • Hallo

    Ich finde es am besten, wenn das Objekt an den richtigen Ort snapt, wenn es bereits sehr nahe dran ist und wird dann "fixiert".
    Wenn es nur eine richtige Position gibt, kannst du anhand von Positionmarkern Hinweise geben, eben das es falsch herum ist und gedreht werden muss, oder wenn es richtig ist und sehr nah an der richtigen Position, snapst du es zur Endposition.

    Gruss
  • Wie hast du dir die Steuerung den genau vorgestellt ?
    Ich könnte mir das so vorstellen:
    1.Man zielt mit dem Controller auf eine Seite des hauptobjektes auf dem Tisch. (Zb vorne, hinten,, oben oder unten.
    2,Nun befindet sich das Objekt auf der richtigen Seiten nun kann man mit dem Controller das Objekt drehen das man anbringen will. (Richtig oder falsch rum)
    3.Nun ist das Objekt richtig rum gedreht und man zielt auf die Stelle wo das Objekt angebracht werden soll. Danach startet eine Animation wo sich das anzubringende Objekt auf das Haupt Objekt zubewegt.
    4.Kollidieren beide Objekte miteinander, wird geprüft ob die Objekte auf der richtigen Seite und richtig rum gedreht sind. Wenn richtig, dockt es an und wenn falsch kommt eine Fehlermeldung und das anzubringende Objekte wird auf die alte Position zurück gesetzt.
  • phoenix-100 schrieb:

    Hallo

    Ich finde es am besten, wenn das Objekt an den richtigen Ort snapt, wenn es bereits sehr nahe dran ist und wird dann "fixiert".
    Wenn es nur eine richtige Position gibt, kannst du anhand von Positionmarkern Hinweise geben, eben das es falsch herum ist und gedreht werden muss, oder wenn es richtig ist und sehr nah an der richtigen Position, snapst du es zur Endposition.

    Gruss

    Sleepy schrieb:

    Wie hast du dir die Steuerung den genau vorgestellt ?
    Ich könnte mir das so vorstellen:
    1.Man zielt mit dem Controller auf eine Seite des hauptobjektes auf dem Tisch. (Zb vorne, hinten,, oben oder unten.
    2,Nun befindet sich das Objekt auf der richtigen Seiten nun kann man mit dem Controller das Objekt drehen das man anbringen will. (Richtig oder falsch rum)
    3.Nun ist das Objekt richtig rum gedreht und man zielt auf die Stelle wo das Objekt angebracht werden soll. Danach startet eine Animation wo sich das anzubringende Objekt auf das Haupt Objekt zubewegt.
    4.Kollidieren beide Objekte miteinander, wird geprüft ob die Objekte auf der richtigen Seite und richtig rum gedreht sind. Wenn richtig, dockt es an und wenn falsch kommt eine Fehlermeldung und das anzubringende Objekte wird auf die alte Position zurück gesetzt.
    Beides hört sich gut an. wenn ihr mir ein Template dazu geben könntet wäre das Perfekt!
  • phoenix-100 schrieb:

    Hallo

    Ich finde es am besten, wenn das Objekt an den richtigen Ort snapt, wenn es bereits sehr nahe dran ist und wird dann "fixiert".
    Wenn es nur eine richtige Position gibt, kannst du anhand von Positionmarkern Hinweise geben, eben das es falsch herum ist und gedreht werden muss, oder wenn es richtig ist und sehr nah an der richtigen Position, snapst du es zur Endposition.

    Gruss
    Hast du vielleicht ein Tipp oder irgendwas was mir weiterhelfen könnte
  • Neu

    phoenix-100 schrieb:

    Hat das inzwischen geklappt?
    Funktioniert etwas bestimmtes nicht?

    Gruss
    Nein es klappt nicht. Habe jetzt folgende Lösung erarbeitet. Jedoch wird Objekt1 in Objekt2 quasi "reingesetzt", jedoch soll er ja andocken und sich auch nicht mehr bewegen (weder mit den Controllern oder sonst wie). Ich erkläre mal kurz was ich gemacht habe, die Blueprint lade ich am besten auch mal hoch. Objekt1 soll moveable sein und Objekt2 static. Collision von Objekt2 ist overlappall und von Objekt1 hat physicsactor. Objekt1 hat zusätzlich ein tag namens Bauteil1. Ich hatte gehofft das hilft aber es funktioniert leider nicht. Kann mir denn niemand helfen?

    Achja die Blueprint ist vom Objekt2, die Blueprint vom Objekt1 beinhaltet nur das Objekt1 und die von Unreal zu verfügunghestellte steuerung des Objektes mit den Controllern
    Bilder
    • 2018-06-18 08_55_48-Window.png

      69,66 kB, 929×423, 4 mal angesehen
  • Neu

    Ja das klappt ja dann schonmal. Das Problem ist, du musst bei Objekt 2 auch irgendwelche Punkte (Sockets) haben, um die Distanz von Bauteil1 Socket1 und Bauteil2 Socket1, Bauteil1 Socket2 und Bauteil2 Socket2 vergleichen zu können, erst wenn es am richtigen Ort ist, soll es attached werden, nicht bereits on overlap. Die Punkte an den Objekten müssen so posizioniert sein, das es nur eine richtige Lösung zum attachen gibt (falls es nur eine gibt). Je nachdem musst du auch mehrere Punkte haben.

    Du vergleichst also die Distanz zwischen diesen zwei Punkte jeweils, sind sie beide unter einem Schwellwert, wird es attached. Der Schwellwert soll so klein definiert sein, dass wenn er unterschritten wird, das Bauteil am richtigen Ort ist und du somit attachen kannst.

    Klingt viel komplizierter als es eigentlich ist. Verstehst du was gemeint ist?
Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.