1 सवाल: एकता: अपनी बनावट को वक्र करने के लिए shader को लागू करें

पर बनाया गया सवाल Tue, Apr 9, 2019 12:00 AM

मैं यूनिटी में एक अंतहीन रनर गेम बना रहा हूं, और मैं इसमें एक कर्व्ड शेडर जोड़ना चाहता हूं जैसे कि इस ट्यूटोरियल में https://youtu.be/6_e_GoWlZOo

लेकिन जब मैं उस सामग्री को किसी ऑब्जेक्ट में जोड़ता हूं तो यह पुराने को बदल देता है। और जब मैं इसे मेष रेंडरर में दूसरे के रूप में जोड़ता हूं तो यह पहले वाले को प्रभावित नहीं करता है। https://drive.google.com/open?id=1-kP4A0Xh3P3r9xr9rrjjjj >

यह shader कोड है:

Shader "PPP/BendWorld"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Curvature("Curvature", Float) = 0.001
    }
        SubShader
        {
            Tags { "RenderType" = "Opaque" }
            LOD 200

            CGPROGRAM
            #pragma surface surf Lambert vertex:vert addshadow
            uniform sampler2D _MainTex;
            uniform float _Curvature;

            struct Input 
            {
                float uv_MainTex;
            };

            void vert(inout appdata_full v) 
            {
                float4 worldSpace = mul(unity_ObjectToWorld, v.vertex);
                worldSpace.xyz -= _WorldSpaceCameraPos.xyz;
                worldSpace = float4(0.0f, (worldSpace.x * worldSpace.x) * -_Curvature, 0.0f, 0.0f);

                v.vertex += mul(unity_WorldToObject, worldSpace);
            }

            void surf(Input IN, inout SurfaceOutput o) 
            {
                half4 c = tex2D(_MainTex, IN.uv_MainTex);
                o.Albedo = c.rgb;
                o.Alpha = c.a;
            }

            ENDCG
    }
            Fallback "Mobile/Diffuse"
}

मैं ऑब्जेक्ट को वक्र करना चाहता हूं और उस पर एक बनावट है, क्या ऐसा करने का कोई तरीका है?

    
1
  1. शेडर के पास अपनी बनावट संपत्ति है। इसलिए आपको इस छायाकार को अपनी इच्छित बनावट के साथ वस्तु में जोड़ना चाहिए - एक नई सामग्री बनाना। जैसा कि आपने देखा, ऑब्जेक्ट में दो सामग्री /शेड जोड़ने से काम नहीं चलेगा। (क्षमा करें यदि मैंने प्रश्न गलत समझा है।)
    2019-04-10 12: 44: 51Z
  2. तो क्या मुझे अपनी बनावट के साथ प्रत्येक वस्तु के लिए नई shader सामग्री बनानी चाहिए? मैंने पहले ही यह कोशिश कर ली है, लेकिन वह बनावट टूट गई है। यह सामान्य बनावट के साथ है drive.google.com /open; id = 1mipTfiobyB7PDTTqq9udX9HgiA2zZ9 और यह उसी बनावट के साथ समान है drive.google.com/open?id=1uMafa5qbh-g4gFh6E1SHsJ3-McJjJG8x
    2019-04-10 14: 55: 33Z
  3. क्या यह पानी के साथ हिलता पानी है? यदि हां, तो आप थोड़े से काम के लिए हैं। तब आपको वक्रता के साथ काम करने के लिए उस shader को संशोधित करना होगा। आप सिर्फ एक और shader नहीं जोड़ सकते हैं और उनसे एक साथ काम करने की अपेक्षा कर सकते हैं।
    2019-04-11 05: 04: 19Z
  4. बनावट टूट गई है क्योंकि आपने अपने uv_MainTex को एक फ़्लोट 2 के बजाय फ़्लोट के रूप में परिभाषित किया है। यूवी निर्देशांक दो आयामी हैं।
    2019-04-11 07: 46: 08Z
  5. @ KalleHalvarsson आपका बहुत-बहुत धन्यवाद, यह काम करता है
    2019-04-11 13: 25: 27Z
    1 उत्तर                              1                         

    बनावट के मुद्दे के बारे में: बनावट टूटी हुई दिखती है क्योंकि आपने अपने uv_MainTex को एक फ़्लोट 2 के बजाय फ़्लोट के रूप में परिभाषित किया है। यूवी निर्देशांक दो-आयामी हैं - यदि आप इसे स्केलर के रूप में परिभाषित करते हैं, तो यह केवल यूवी के यू अक्ष का उपयोग करेगा।

        
    1
    2019-04-11 14: 30: 23Z
स्रोत रखा गया यहाँ