Jump to content
Unity Insider Forum

UI-Elemente auf einem Plane ablegen


Andy09
 Share

Recommended Posts

Mahlzeit,

so, jetzt habe ich endlich meine ersten "Erfolge". Ich habe mit Hilfe von Unity und der Meta Quest 3 einen Audi RS6 in Lebensgröße ins Wohnzimmer stellen können. Wenn ich den rechten A-Button kurz drücke wechselt er die Farbe.

Des Weiteren, wenn ich am rechten Controller den Trigger halte, erscheint ein Würfel an meinem Handgelenkt der auch dort fixiert bleibt und ich kann ihn mir von allen Seiten ansehen.

Links den Trigger drücken und es erscheint eine Plane. Und jetzt zu meiner Frage: 
Ich möchte auf dieser Plane UI Elemente legen wie z.B. einen Button usw. Aber ich bekomme es nicht hin. Ich bin scheinbar gezwungen immer mit einem Canvas zu arbeiten. Also dachte ich mir, lege ich den Canvas als Child auf meine Plane. Aber das war wohl zu einfach, denn meine Canvas befindet sich irgendwo fest in der Welt und ich RIESIG gegenüber meine Plane.

Gibt es irgendwie eine Möglichkeit das ich auf meine Plane UI-Elemente legen kann? GIbt es sicherlich, aber, ich schaffe es einfach nicht 🙂

Gruß aus Berlin
Andy

Link to comment
Share on other sites

Du kannst dem Canvas sagen, wie und wo er sich darstellen soll. Du has jetzt Screen Space Overlay aktiviert und musst auf World Space unschalten.
Da sind dann noch einige weitere Einstellungen zu machen um die UI Elemente richtig zu positionieren. Aber dazu gibt es zum Glück viele Tutorials im Netz.
Such mal bei Tante Google mit den Schlüsselwörtern  unity 3d world space canvas

Link to comment
Share on other sites

Guten Abend 🙂

genau so habe ich auch gesucht, so ist es ja nicht. Aber, und bitte bedenkt dabei, ich bin ein kompletter Neuling was 3D angeht, Game Engines etc. in den ganzen Beispielen waren die UI-Elemente bzw. das Canvas z.B. an eine feste Wand gelegt worden.

Ich habe aber ein Hand-Gelenk, wo die Plane angezeigt wird. Und natürlich ist mein Handgelenk die ganze Zeit nicht ruhig. Ihr müsst euch das so vorstellen: Ich möchte versuchen das ich mein Handgelenk so drehe, als würde ich eine Uhr ablesen wollen. Aber, statt einer Uhr, kommt ein Menü, wo ich eine Auswahl treffen kann, z.B. Farbe ändern, anderes Auto setzen oder sonst was.

Ich versuche euch mal meinen Denkfehler zu demonstrieren. Ich habe einen Controller, als Child habe ich eine Plane und wenn ich den Trigger drücke, erscheint in der VR auch die Plane an meinem Handgelenk. Naiv wie ich bin, dachte ich, wenn ich als nächstes Child das Canvas lege und darauf dann die UI-Elemente, dann werden diese auch auf der Plane angezeigt. 

Aber, wie gesagt, ich bin da wohl etwas zu naiv rangegangen. Mein Audi RS6 war in der Welt (Editor) plötzlich klitzeklein, das Canvas riesig und komplett (Kilometerweit) entfernt, und als Krönung sehe ich einen Orangenen Pfeil in die eine Richtung und einen weißen Pfeil zurück in die andere Richtung.

Ich verstand ehrlich gesagt die Welt nicht mehr. Ich hatte ehrlich gesagt erwartet das sich das Canvas an das Plane richtet, welches sich wiederum an die Position von meinem Controller richtet.

Fragen wir mal andersrum: Wie würdet ihr vorgehen? In der Hoffnung das ich es verstehe. Ich bin wirklich sehr lernfähig und interessiert 😇🥰

 

Gruß
Andy

PS: Ich wollte mal ein Video anfügen, hat aber leider nicht geklappt...

Link to comment
Share on other sites

Moin!

Du willst also deine UI auf der Plane anzeigen und die Plane ist ein 3D Objekt im Raum, die deiner Hand folgt. Kein Problem.

Zum Testen machste mal eine einfache neue Szene und Erzeugst so eine Plane und richtest die So aus, dass du sie mit der Kamera im Game View sehen kannst. Die brauchen wir gleich.

Jetzt erzeugst du ein Canvas. Da stellst du erstmal gar nichts ein. Aber wenn du dir die Eigenschaften im Inspector anschaust, dann siehst du, dass der Canvas im Render Mode auf "Screen Space Overlay" eigestellt ist. Alles was demnächst an UI Objekten dem Canvas untergeordnet ist, wird wie eine Folie auf die Kameralinse gepatscht.

Nun da der Cancvas da ist erzeugst du einfach 4 UI Images. Denen brauchst du keine Textur geben, weil wir wollen einfach nur die Dinger sehen und da reicht es, dass sie einfach weiß sind.

Schiebe die 4 Images an unterschiedliche Positionen, Einfach so dass es wie ne 4 auf nem Würfel aussieht.

Soweit alles gut. Du solltest deine Plane irgendwo im Bild sehen und natürlich auf die 4 weißen Quadrate.

Jetzt schaltest du den Canvas im Render Mode auf "World Space" um. Je nachdem, wo deine Camera im Raum liegt und wie sie ausgerichtet ist, siehst du die UI Elemente weiterhin, oder eben nicht. Macht nichts. Weiter gehts.

Ein Canvas, ist ein GameObject, welches du im Raum bewegen kannst. Du kannst es auch anderen Objekten unterordnen!
Und das tust du jetzt. Ordne den/die/das Canvas der Plane unter und stelle im Inspector die Rect Transform Koordinaten auf 0,0,-0.5 ein. ( Z ist also etwas nach vorne geschoben).
The Canvas liegt jetzt genau auf deiner Plane und wahrscheinlich sind die UI Elemente jetzt riesengroß. Das macht aber nichts. Das kann man einstellen.
Im Inspector vom Canvas siehst du die Bereiche Rotation und Scale. Die Werte bei Rotation sollten auf 0,0,0 stehen. Falls es nicht so ist, dann stelle sie so ein.
Im Bereich Scale stehen jetzt irgendwelche Werte. Die musst du wahrscheinlich verkleinern. Aktivier dafür die Klammer vor den Werten (Das ovale Symbol mit dem Schrägstrich) und stelle dann beim X sowas wie 0.001 ein. Nur mal zum Test. Alle 3 Werte sollten sich jetzt verändert haben und deine UI sollte jetzt viel kleiner sein und auf deine Plane passen. Welchen Skalierungsfaktor du jetzt wirklich bruachst, kann ich nicht sagen. Das findes du aber raus.

Kleine Info noch: Die Werte für Width und Height am Canvas zu ändern bewirkt nichts. Bei den UI Elementen innerhalb des Canvas macht das was aus. Aber der Canvas selbst ist ein Imaginäres Dingen, was jetzt lediglich Koordinaten im Raum und einen Skalierungsfaktor im Bezug zum Vaterobjekt hat.

Dein Canvas ist jetzt also Kind der Plane und die Elemente schweben leicht über der Plane. Wenn du diese Plane im Raum bewegst oder drehst, werden die UI Elemente mitgenommen. Das sollte in etwa das sein, was du haben willst.

Um jetzt mit den UI Elementen interagieren zu können, musst du die entsprechende EventCamera in den Slot legen. Wie das da bei deinem VR Dingen ist, weiß ich leider nicht. Da bin ich raus! :D

Du solltest jetzt aber alles so hinkriegen, wie du es willst.

Link to comment
Share on other sites

  • 2 weeks later...

Guten Morgen,

wollte nur mal als Rückmeldung geben: Habe es geschafft 🙂

Muss allerdings zugeben, ich war mit dem Ergebnis leider doch nicht sooo zufrieden, da es die Bedienung doch erheblich erschwert hat. Idee und Ansatz gut, aber Bedienung könnte eher zum Frust werden wenn man mit beiden Händen gezielt arbeiten muss. Die Gefahr sich zu "verklicken" ist doch zu groß, leider.

Sah aber nicht schlecht aus, und hab jetzt einiges mehr gelernt, was für mich die Hauptsache ist 🙂

Gruß
Andy

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...