minuschki Geschrieben 5. November 2021 Melden Share Geschrieben 5. November 2021 Hallo zusammen Ich möchte gerne im 2D Modus ein Bild mit der Maus verzerren! Dazu habe ich bei den 4 Ecken Anfasser positioniert, welche sich mit der Maus verschieben lassen. Das Bild ist als Material einem Quad zugewiesen, welches ja bekanntlich aus 2 Triangles besteht. Und hier ergibt sich auch schon das Problem! Zieht man an der linken, oberen Ecke, wird das Bild zwar verzerrt, aber eben nur die linke, obere Hälfte. Das Dreieck unten, rechts bleibt unverändert und es entstehen Knicke im Muster. Im hochgeladenen Bild könnt ihr den Effekt sehen. Frage: Gibt es eine Möglichkeit im 2D Modus, ein 2D-Sprite korrekt zu verzerren, so wie das z.B. in Photoshop der Fall ist? Mit Quad klappt das ja offensichtlich nicht. Danke für eure Hilfestellung! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SkipToPlay Geschrieben 6. November 2021 Melden Share Geschrieben 6. November 2021 Du möchtest ein Rechteck auf einem Trapez abbilden, dafür benötigt man etwas Mathemagie im Shader. Ich bin aktuell nicht stark genug in diesen Thematiken eingearbeitet, daher lasse ich nur mal Begriffe und Links fallen, die dir vielleicht weiterhelfen: Quadrilateral Interpolation / Projective Interpolation https://www.reedbeta.com/blog/quadrilateral-interpolation-part-1 https://gamedev.stackexchange.com/questions/148082/how-can-i-fix-zig-zagging-uv-mapping-artifacts-on-a-generated-mesh-that-tapers/176352#176352 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
minuschki Geschrieben 6. November 2021 Autor Melden Share Geschrieben 6. November 2021 Ich danke SkipToPlay für die Antwort! Höchstwahrscheinlich überfordern deine gutgemeinten Links meine Programmierfähigkeiten, da ich mich in der Shader-Welt überhaupt nicht auskenne. Immerhin habe ich teilweise verstanden, wie das Problem gelöst werden könnte. Und der Aufwand, die handvoll Codezeilen in einen bestehenden Shader einzufügen, ist für einen versierten Kenner der Materie bestimmt ein Klacks. Ich hingegen verstehe nur Bahnhof. Also werde ich mal in den unendlichen Weiten des Internets nach so einem Shader suchen. Toll und nett wäre natürlich auch, wenn jemand von euch einen solchen herumliegen hat und ihn hier posten könnte! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
minuschki Geschrieben 7. November 2021 Autor Melden Share Geschrieben 7. November 2021 Ich habe noch nicht aufgegeben und mal versucht, die Anleitung unter https://gamedev.stackexchange.com/questions/148082/how-can-i-fix-zig-zagging-uv-mapping-artifacts-on-a-generated-mesh-that-tapers/176352#176352 zu befolgen. Der abgänderte Shader gibt zwar keine Fehlermeldung aus, bringt aber auch nicht den gewünschten Effekt (siehe Bild). Der Knick entlang der Triangles ist nach wie vor vorhanden. Könnte mal jemand einen Blick draufwerfen, wo da der Wurm drin ist? Zur Erinnerung: Der Shader sollte im 2D Modus die Textur auf einem Quad durch das Verschieben der Eckpunkte korrekt verzerren. Shader "Unlit/Projektion" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; // float2 uv : TEXCOORD0; // diese Zeile wurde deaktiviert float3 uv : TEXCOORD0; // und durch diese Zeile ersetzt }; struct v2f { // float2 uv : TEXCOORD0; // diese Zeile wurde deaktiviert float3 uv : TEXCOORD0; // und durch diese Zeile ersetzt float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); // o.uv = TRANSFORM_TEX(v.uv, _MainTex); // diese Zeile wurde deaktiviert o.uv = v.uv; // und durch diese Zeile ersetzt // o.uv.xy = o.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; // momentan deaktiviert. braucht es die? return o; } fixed4 frag (v2f i) : SV_Target { float2 uv = i.uv.xy / i.uv.z; // diese Zeile wurde eingefügt // sample the texture fixed4 col = tex2D(_MainTex, i.uv); return col; } ENDCG } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.