• Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Hellhound

Members
  • Content count

    35
  • Joined

  • Last visited

  • Days Won

    2

Hellhound last won the day on March 31

Hellhound had the most liked content!

Community Reputation

6 Neutral

About Hellhound

  • Rank
    Advanced Member
  1. Hab es ausprobiert, der Renderer Call wird wirklich nicht benötigt. Danke Euch noch einmal.
  2. Danke für den Hinweis.
  3. Ich habe Euren Code einmal ausprobiert, klappt soweit hervorragend für eine normale Scene. Da ich allerdings ein EditorWindow baue und hier keine Laufzeitumgebung habe konnte ich das ganze so nicht anwenden und OnPrerender kann dann nicht verwendet werden. Habe Aber Eure Mechanismen genutzt und initialisiere nun die Cameras in einer separaten Methode die ich beim Laden des Modells einmal explizit ausführe: private void InitPreviewScene() { // initialize a new empty scene for the model previewScene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); // create main camera var goCamera = new GameObject("Main Camera"); mainCamera = goCamera.AddComponent<Camera>(); mainCamera.transform.position = new Vector3(0,0,-1.8f); mainCamera.transform.RotateAround(model.transform.position, Vector3.down, 25f); mainCamera.transform.RotateAround(model.transform.position, Vector3.left, 2f); // initalize render to texture for preview this.previewTexture = new RenderTexture(512, 512, 24, RenderTextureFormat.ARGB32); // create 2nd camera for preview var goPVCamera = new GameObject("Preview Camera"); previewCamera = goPVCamera.AddComponent<Camera>(); previewCamera.CopyFrom(mainCamera); previewCamera.targetTexture = this.weaponPreviewTexture; // create a directional light var goLight = new GameObject("Directional Light"); var light = goLight.AddComponent<Light>(); light.type = LightType.Directional; light.transform.position = new Vector3(0,0,-80f); //finaly make scene active EditorSceneManager.SetActiveScene(previewScene); } Klappt soweit sehr gut. Die Preview-Kamera wird nun in Update gerendert und in OnGUI wird die PreviewTexture im Editor plaziert. Danke Euch noch Einmal! Denke das passt soweit oder seht Ihr da noch ein Problem?
  4. Wow. Danke für Eure ausführlichen Codebeispiele. Das mit der 2ten Camera klingt plausibel, ich werde meinen Code dementsprechend nachbessern.
  5. Ok, hier mal der Code, der soweit identisch ist, bis auf die Auslagerung der RTT als Member: private Camera mainCamera; private RenderTexture mainPreview; void Awake(){ this.mainPreview = new RenderTexture(512, 512, 24, RenderTextureFormat.ARGB32); } void OnGUI(){ if(this.mainCamera!=null){ this.mainCamera.targetTexture = this.mainPreview; this.mainCamera.Render(); GUI.DrawTexture(new Rect(0, 100, position.width, position.height), this.mainCamera.targetTexture); //GUI.DrawTexture(new Rect(0, 100, position.width, position.height), this.mainPreview); } } An dieser Stelle erhalte ich immer die Fehlermeldung, das die Textur, die an die GUI übergeben wird null ist. Sonst ist alles im Code identisch.
  6. Hallo, irgendwie hab ich grad ein Problem mit dem Rendern der Kamera in eine Textur i.Z.m. dem EditorWindow was ich nicht so ganz verstehe. Das ganze funktioniert hervorragend wenn ich folgenden Aufruf in der OnGUI-Methode mache: if(this.mainCamera!=null){ this.mainCamera.targetTexture = new RenderTexture(512, 512, 24, RenderTextureFormat.ARGB32); this.mainCamera.Render(); GUI.DrawTexture(new Rect(0, 100, position.width, position.height), this.mainCamera.targetTexture); } Nun fand ich es nicht optimal bei jedem OnGUI Aufruf die RenderTexture neu zu instanziieren. Daher habe ich diese als Member angelegt und in der Awake() Methode instanziiert und setze sie beim instanziieren der Kamera als RenderTarget. Was ich jetzt nicht verstehe, ist das ich nun ständig das Warning bekomme die RTT währe null und daher das GUI.DrawTexture auch nicht greift. Wenn die Textur null ist verliert natürlich auch konsequenterweise die Camera die Referenz auf ihr RenderTarget. Nur warum wird die Textur in jedem RenderCall null?? Kann mir das jemand erklären? Gruß Hellhound
  7. Danke für Deinen Hinweis. Ich habe das ganze mal ausprobiert, bringt mir so aber keinen nennenswerten Vorteil, im Gegenteil, ich habe dann kein sichtbares Scenen-Ergebnis. Das scheint wirklich nur interessant zu sein, wenn im Inspektor eine Kamerapreview erzeugen will ...
  8. Hallo, aktuell baue ich mir auf Basis des Editor Windows einen Editor um 3D-Modelle zu importieren, dann mit Werten zu belegen und als Prefab zu sichern. Das Laden des Modells klappt, ich erzeuge aktuell auch eine neue Szene und kann dort das Objekt und die Kamera plazieren. Nun habe ich gesehen, dass ich über den EditorSceneManager auch eine PreviewScene erstellen kann. Ich finde jedoch keinerlei Doku dazu. Kann mir jemand den Unterschied erklären? Ich habe mal damit rumgespielt und festgestellt, dass ich eine PreviewScene nicht aktivieren muss, bekomme dort jedoch aktuell auch keine Objekte hinzugefügt, die landen immer in der aktiven "normalen" Scene. Ich vermute mal, ich muss die noch extra "moven". Wo liegt der Vorteil? Oder ist das Teil nur für die Preview im Inspector Editor gedacht? Gruß Hellhound
  9. Hab noch mal eine ganze Weile gegoogelt und werde es über den Editor versuchen. So kann ich vielleicht auch gleich eine Sprite-Map aus mehreren Sprites generieren um zusätzlich Ressourcen zu sparen. Zudem könnte ich den Editor auch so erweitern, das ich gleich die Daten für die einzelnen Objekte setzen kann, z.B. als ScriptableObjekt. Danke für Eure Tipps.
  10. Danke Zer0Cool für Deine Ausführungen. Ich denke es macht sinn, die Ojekte direkt zu nutzen um die Preview zu erstellen, das erzeugt nen sehr schönen "you get what you see"-Effect, grad die aktuellen Shooter wie PUG (hab mal zwei Bilder beigefügt) zeigen das meiner Meinung nach sehr gut. Wie Du bin ich aber kein Freund davon, das über ein weiteres Werkzeug zu machen, die Idee mit der Renderszene gefällt mir ganz gut. Ich glaube ich werde diese mal aufgreifen, und mir daraus ein Editor basteln, sozusagen als Vorstufe für einen möglichen MOD-Import.
  11. Hallo zusammen, ich wollte einmal generell fragen, wie Ihr in Unity die Preview von Objekten umsetzen würdet, besonders dann wenn es um eine Vielzahl von Objekten geht, z.B. für ein Inventory. Ich orientiere mich da an aktuellen Titeln, wie z.B. PUG ... Für das UI render ich aktuell meinen Char in eine Textur mit einer spezifischen Previewkamera. Damit ist die Ansicht des Charakters sichergestellt und es läuft bestens. Nur wie geht man z.B. mit den ganzen Items für das Inventory vor? Sie müssen ja in einer grösseren Vielzahl bereits bei der Auswahl vorliegen ... Man könnte ja Sprites aus dem Renderprogramm generieren, müsste hier aber dann u.U. aber sehr viele Variationen berücksichtigen... Vor 5.6 hätte man auch das Prefab icon nehmen können, seit 5.6 gibt es ja im Prefab auch die Kugel für das Material was murx ausschaut ... Alternativ könnte man über die Objekte iterieren (z.B. beim Start) und eine Spritemap erstellen, das verlängert aber die Ladezeit. Oder sollte man einen Editor bauen der das ermöglicht? Dann mal her mit Euren Ideen Viele Grüsse Hellhound
  12. Danke für den entscheidenen Hinweis. Ich war mir sicher, dass ich das bereits ausprobiert hatte. Ich glaube inzwischen, dass ich nen Cachingfehler hatte. Nachdem ich das Skript einmal entfernt und neu gebunden habe klappte es dann mit Deiner Ergänzung (vorher hatte sich der Zustand nicht verändert).
  13. Hallo zusammen, ich versuche seit einiger Zeit dynamisch im Skript auf Basis meiner Meshes die Boundingbox für ein Objekt zu bestimmen, das aus mehreren Meshes besteht. Normalerweise hätte ich über alle Vertices iteriert um das Min, Max zu bestimmen und auf der Basis die AABB erstellt mit dem Zentrum (max - min). Nun habe ich in diversen Threads gelesen, das ich die Boundaries auch über den Renderer bestimmen kann da dieser die Werte im World-Space vorhält, während die Mesh selbst die Bounds im Local-Space aufweist. Ich bestimme die Bounds aktuell wie folgt: MeshFilter[] filters = this.gameObject.GetComponentsInChildren<MeshFilter>(); Renderer[] renderers = this.GetComponentsInChildren<Renderer>(); Bounds bounds1 = new Bounds(Vector3.zero, Vector3.zero); Bounds bounds2 = new Bounds(Vector3.zero, Vector3.zero); int count = 1; foreach (Renderer renderer in renderers) { if (count == 1) { bounds1 = new Bounds(renderer.bounds.center, renderer.bounds.size); var col1 = renderer.gameObject.AddComponent<BoxCollider>(); col1.size = bounds1.size; col1.center = bounds1.center - renderer.gameObject.transform.position; } else { bounds2.Encapsulate(renderer.bounds); var col2 = renderer.gameObject.AddComponent<BoxCollider>(); col2.size = bounds2.size; col2.center = bounds2.center - renderer.gameObject.transform.position; } count++; } } Ich hätte jetzt erwartet, das die BoxCollider die ich hier erstelle auf Basis der Bounds, das Objekt abdecken. Dies ist aber nicht der Fall, die Boxen sind erheblich kleiner als das eigentliche Objekt. Ich finde irgendwie keinen Fehler ... Ich bin dankbar für jeden Tip. Gruß Hellhound BoundsTest.unitypackage
  14. Was mir inzwischen aufgefallen ist, das Problem scheint sich rein auf den POSE Modus zu beziehen. Selektiere ich rechts die Armature-Bone Struktur rückt der Avatar wieder an die korrekte Position. Gleiches gilt, wenn ich Hat-Mesh selektiere und dann in den Editor-Modus wechsel, dann "rückt" der Avatar wieder nach vorn und alles passt. Sobald ich allerdings den Armature Root-Knoten auswähle oder den Edit-Modus verlasse tritt der Fehler wieder auf ...
  15. Hallo zusammen, ich bin noch ziemlicher Neuling was das Arbeiten mit Blender angeht und habe bzgl. des Modellierens zwei linke Hände, die sind eher für das Coding geeignet . Für meinen Unity Avatar Customizer versuche ich nun Objekte, die ich als OBJ Datei aus dem FUSE Modell exportiert habe an meinen Avatar zu binden, für den ich zuvor mit dem Mixamo-Rigger die Armature erstellen konnte. Das klappt auch zum größten Teil, wie man diesem Thread entnehmen kann : Nun habe ich mit einzelnen Modellen ein Problem das ich nicht erklären kann. Nach dem ich meinem Base-Avatar das Objekt hinzugefügt habe sieht noch alles korrekt aus, lediglich der Helm ist noch nich ganz richtig positioniert (Screenshot 1: AddObject). Nachdem ich dies Korrigiert habe, markiere ich die Mesh, anschließend das Armature und Weise die Mesh dem Armature per Strg+P zu, wobei ich die Generierung von Auto-Weights für die einzelnen Vertex-Gruppen nutze Und genau hier liegt nun mein Problem. Bei einzelnen Modellen werden nun Teile des Modells an einzelnen Stellen durch die Deformation herausgelöst (Screenshot 2). Im Falle des Helms ist das Glas der Schutzbrile deplaziert. Ich vermute, dass das irgendwie mit den Auto-Weights zusammenhängt, kann mir das aber nicht erklären, warum z.B. nur das Glas deplaziert wird, Teile des Helms aber nicht, obwohl es eine Mesh ist ... Irgendwie habe ich es schon einmal lösen können, dass dies nicht passiert, weiß aber nicht mehr wie. Hat jemand einen Tip, was ich hier falsch mache, bzw. wie ich es ohne Auto-Weights hin bekomme, dass der Helm bei der Animation korrekt mitbewegt wird? Ich bin dankbar für jeden Tip. Gruß Hellhound