Jomnitech Geschrieben 31. Januar 2018 Melden Share Geschrieben 31. Januar 2018 Hallo Ich suche eine möglichkeit um die Textur grösse bei zu behalten, unabhängig wie gross das Objekt ist. Ich hab schon viel gegoogelt, bin aber auf keine Lösung gestossen. Ich möchte das die Textur/Material immer seine grösse beibehält, egal wie gross oder klein das Objekt ist. Ich habe dazu nach langem googeln keine vernüftige Lösung gefunden. Natürlich könnte man einfach mit kleinen Planes arbeiten die das entsprechende Seitenverhältnis haben, oder für jedes grösse Plain ein separates Material mit entsprechenden "tiles" erstellen, aber muss das sein? Gibt es hierfür nicht etwas einfaches? Ich habe auch schon Scripts gefunden die das Problem lösen, aber da muss man für jede Plane einzeln die Proportionen einstellen, kommt in etwa auf selbe raus wie entsprechende Materials zu erstellen. Im Anhang zu sehen wie es ist, und wie ich es gerne hätte. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 31. Januar 2018 Melden Share Geschrieben 31. Januar 2018 2D oder 3D? 3D dürfte schwierig werden ... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 31. Januar 2018 Autor Melden Share Geschrieben 31. Januar 2018 @Zer0Cool 3D Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 31. Januar 2018 Melden Share Geschrieben 31. Januar 2018 Es gibt keine generelle Lösung für alle 3D-Objekte die funktioniert. Es gibt einige Speziallösungen die für Cubes oder andere 3D-Objekte, dabei werden die UVs überschrieben. Ein Asset welches für viele 3D-Objekte funktioniert wird dabei genannt. Die Shadervariante funktioniert dabei leider nur für 2D-Objekte. Wir hatten letztens eine Diskussion zum Thema: Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 31. Januar 2018 Melden Share Geschrieben 31. Januar 2018 Hier ist ein Shader der nicht perfekt ist, aber das Ergebnis ist annehmbar. Sollte man aber nur für statische Objekte verwenden und die Textur bleibt nicht 100%tig "stabil", aber was besseres habe ich auf die Schnelle nicht hinbekommen, zumindest nicht als Shader. Für bessere Lösungen muss man vermutlich die UVs vorberechnen. // Shader by Zer0Cool for the Unity Insider Forum (forum.unity-community.de) // Skype: zer0f0rce Shader "Custom/WorldspaceTiling" { Properties{ _Color("Color", Color) = (1,1,1,1) _MainTex("Albedo (RGB)", 2D) = "white" {} _Scale("Scale", Vector) = (1, 1, 1, 1) _BumpMap("Bumpmap", 2D) = "bump" {} _Glossiness("Smoothness", Range(0,1)) = 0.5 _Metallic("Metallic", Range(0,1)) = 0.0 } SubShader{ Tags{ "RenderType" = "Opaque" } LOD 200 CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma surface surf Standard fullforwardshadows vertex:vert // Use shader model 3.0 target, to get nicer looking lighting #pragma target 3.0 sampler2D _MainTex; sampler2D _BumpMap; float4 _Scale; struct Input { float2 uv_MainTex; float2 uv_BumpMap; }; half _Glossiness; half _Metallic; fixed4 _Color; float4 TexCoordsWorld(appdata_full v) { float4 posWorld = mul(unity_ObjectToWorld, v.vertex); float4 texcoord; float4 _normal = normalize(mul(unity_ObjectToWorld, v.normal)); if (abs(_normal.x) > 0.5) { texcoord.xy = posWorld.yz; texcoord.zw = posWorld.yz; } else if (abs(_normal.z) > 0.5) { texcoord.xy = posWorld.xy; texcoord.zw = posWorld.xy; } else { texcoord.xy = posWorld.xz; texcoord.zw = posWorld.xz; } return texcoord; } void vert(inout appdata_full v) { v.texcoord = TexCoordsWorld(v); } void surf(Input IN, inout SurfaceOutputStandard o) { // Albedo comes from a texture tinted by color fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex)); // Metallic and smoothness come from slider variables o.Metallic = _Metallic; o.Smoothness = _Glossiness; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 1. Februar 2018 Autor Melden Share Geschrieben 1. Februar 2018 @Zer0Cool Hey, vielen Dank für deine Antwort. Der Shader macht prinzipiell genau das was ich möchte, grosses Danke hierfür. Ein kleiner Wermutstropfen dass er die, ich sage mal Referenzposition, nicht beibehält. Wenn ich das Objekt verschiebe, bleibt der Shader/Textur an der Position, statt sich an dem Objekt auszurichten. Edit: Was meinst du mit Zitat:" was besseres habe ich auf die Schnelle nicht hinbekommen "? hast du den auf die Schnelle selber geschreiben? Und jetzt weiss ich auch was du mit "nur auf statische Objekte" meinst, da er sich nicht mitbewegt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 1. Februar 2018 Melden Share Geschrieben 1. Februar 2018 Zitat Hey, vielen Dank für deine Antwort. Der Shader macht prinzipiell genau das was ich möchte, grosses Danke hierfür. Ein kleiner Wermutstropfen dass er die, ich sage mal Referenzposition, nicht beibehält. Wenn ich das Objekt verschiebe, bleibt der Shader/Textur an der Position, statt sich an dem Objekt auszurichten. Ja, die Textur richtet sich nicht am Objekt aus, sondern quasi an der Worldposition und damit sollte man den Shader für bewegte Objekte lieber nicht verwenden. Zitat Was meinst du mit Zitat:" was besseres habe ich auf die Schnelle nicht hinbekommen "? hast du den auf die Schnelle selber geschreiben? Ja, ca. 90% des Shaders sind von mir. Der Shader ist nicht perfekt, da er die Originaltextur teilweise etwas verzerrt (hängt von der Rotation des Meshes im Raum ab). Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 1. Februar 2018 Autor Melden Share Geschrieben 1. Februar 2018 @Zer0Cool Wow, bin gerade etwas sprachsol das du extra eine Shader für mich schreibst. Shaders sind ja schon etwas wie die Königsdisziplin des Programmierens. Der Shader macht eigentlich genau was er sollte, von daher vielen Dank. Habe jetzt etwas damit rumgespielt und bin eigentlich vollends zufrieden. Ich ziehe meinen Hut und verneige mein Haupt, vielen Dank. -closed- 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.