Alex Greenwood Posted April 15 Report Share Posted April 15 Moin zusammen, ich weiß, dass jedes Objekt in seiner Grundgröße mit 1 x 1 x 1 bemessen wird (auch in anderen Programmen). Ähnliches gilt für die Position, die nur dann bei allen identisch ist, wenn ich sie vorab resette. Es behindert aber leider etwas den Workflow, da ich bspw. nicht sehen kann, wieviel Meter (o.ä.) ein Gebäude an Höhe hat und somit keinen exakt gleich großen Anbau errichten kann. Das ginge nur, wenn ich messe, was aber ebenfalls vom Handling her (bspw. in Blender) sehr ungünstig gemacht ist. Meine Frage ist also, wie handhabt ihr das, bzw. kann man sich auch alternative Maßeinheiten (zusätzlich) anzeigen lassen, also relative und absolute Größen? Besten Gruß, Alex Quote Link to comment Share on other sites More sharing options...
malzbie Posted April 15 Report Share Posted April 15 Hi! Du musst wissen, dass in Unity eine Einheit einem Meter entspricht. Wenn du also in Unity ein Würfel-Grundobjekt erstellst, dann ist das 1m hoch, breit und lang. In 3D Programmen kann man schon messen wie groß 3D Objekte so sind. In Blender und in Cinema4D gibt es Möglichkeiten zu messen. In anderen Programmen bestimmt auch. In welchem Maßstab sie aber in Unity rein kommen, musst du einfach mal testen. Das kann von 3D Programm zu 3D Programm unterschiedlich sein. Vorallem hängt es vom Format ab. Via FBX kann man z.B. hier und da Skalierungsfaktoren einstellen. Genauso, kannst du im Importfenster von Unity einstellen, in welchem Skalierungsfaktor die Objekte eingeladen werden sollen. Wenn du weisst, wie du die Objekte von einem 3D Programm nach Unity in gewünschtem Maßstab rüber kriegst, sollte es eigentlich recht einfach sein. Ich baue nicht-organische Objekte immer schon direkt in der richtigen Größe im 3D Programm, muss also meistens gar nicht nachmessen. Und wenn doch, dann ist es relativ einfach sie so zu verändern, dass die Maße auch passen. Irgendwo musst du halt messen und anpassen. Das geht (vorzusweise) im 3D Programm aber auch in Unity selbst. Den richtige Workflow musst du selber heraus finden. Ich würde immer das 3D Programm bevorzugen. Quote Link to comment Share on other sites More sharing options...
Sascha Posted April 15 Report Share Posted April 15 vor 15 Minuten schrieb malzbie: Du musst wissen, dass in Unity eine Einheit einem Meter entspricht. Wenn du also in Unity ein Würfel-Grundobjekt erstellst, dann ist das 1m hoch, breit und lang. Muss man sich aber natürlich nicht dran halten. Wenn du ein Sternensystem oder rote Blutkörperchen in der Ader in deiner Szene darstellen willst, dann wäre es irgendwo zwischen irrsinnig und unmöglich, sich daran zu halten. Am Ende musst du dich in deinem System für einen Maßstab entscheiden und konsistent bleiben. Wenn ich mich recht erinnere, waren in Unreal Tournament 99 die Charaktere 84 Einheiten hoch, in Unreal Tournament 3 128, und in Gears of War waren es 100. Solange du innerhalb des Spiels konsistent bleibst, ist es echt egal. Quote Link to comment Share on other sites More sharing options...
malzbie Posted April 15 Report Share Posted April 15 @Sascha Das ist klar. Kamm man machen wie man will. Aber wenn du einen Mensch z.B. 10 Mal so groß machst und dann die Schwerkraft nutzen willst, dann solltest du die die Physikwerte auch anpassen. Es wirkt sonst nicht so recht. Quote Link to comment Share on other sites More sharing options...
Alex Greenwood Posted April 15 Author Report Share Posted April 15 Danke für die Antworten! Ja, das ist mir bewusst. Alles vorab im 3D-Programm zu bauen, scheint mir auch die sinnigste Variante. Dennoch kann es ja sein, dass man nur eine Kleinigkeit hinzufügen will und dann aber nicht genau weiß, wie groß etwas ist. Da hilft nur manuell rumskallieren, was aber nicht immer exakt ist. Ich habe aber grad gesehen, dass im Box- oder Meshcollider die absoluten Maße stehen. Zumindest scheint es so. Das wäre ein Traum und würde das 'Problem' lösen. Wie sieht es bei der Position aus? Ist meine Annahme richtig, dass die Position nur identisch ist, wenn man sie direkt nach dem Import resettet? Besten Dank vorab! Alex Quote Link to comment Share on other sites More sharing options...
Alex Greenwood Posted April 15 Author Report Share Posted April 15 Oh, doch nicht. Schade... Quote Link to comment Share on other sites More sharing options...
Sascha Posted April 15 Report Share Posted April 15 vor 1 Stunde schrieb malzbie: Das ist klar. Ja, DU weißt das, aber für @Alex Greenwood war das vielleicht nicht klar vor 1 Stunde schrieb Alex Greenwood: Ich habe aber grad gesehen, dass im Box- oder Meshcollider die absoluten Maße stehen. Zumindest scheint es so. Das wäre ein Traum und würde das 'Problem' lösen. Joa, ist die Größe des Colliders, aber die wird ggf. noch mit der Skalierung des Objekts durch die Transform-Komponente multipliziert. Wenn du wirklich exakte Maße brauchst (und das tut man gar nicht mal so oft...), dann solltest du am besten mit diesen Maßen im 3D-Programm arbeiten und das nur noch importieren. Aber du kannst die absoluten Maße eines Objekts anhand von Renderer.bounds auslesen. Da hast du eie AABB (Axis-Aligned Bounding Box), also den kleinsten möglichen, an den Achsen ausgerichteten ("nicht gedrehten") Quader, der dein 3D-Modell umschließen kann. Da kannste dann die Höhe von auslesen oder so. vor 1 Stunde schrieb Alex Greenwood: Wie sieht es bei der Position aus? Ist meine Annahme richtig, dass die Position nur identisch ist, wenn man sie direkt nach dem Import resettet? Identisch zu was? Quote Link to comment Share on other sites More sharing options...
Alex Greenwood Posted April 17 Author Report Share Posted April 17 Danke für die Antwort! Das ist ja immerhin eine gute Möglichkeit. Mit "identisch" meinte ich, bei allen Objekten gleich. Manchmal haben Objekte eine andere Koordinate, obwohl sie an der gleichen Stelle stehen. So geschehen bei einem aktuellen Projekt. Hier steht ein Container neben einem LKW. Die Position des Containers ist Vector3(179,1.63,981.200012), die des LKWs Vector3(-95.0999985,157.845718,503.149994). Resette ich die Position sofort nachdem ich ein Objekt in mein Projekt geladen habe, so ist es natürlich 0, 0 und 0. Mache ich das mit allen Objekten, so ist der "0-Punkt" identisch und somit auch die Position in Relation zu allen anderen Objekten, oder? Besten Gruß, Alex Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.