
рдореИрдВ рдПрдХ рдмрд╛рд░ рдШрд░ рдкрд░ рдмреИрдард╛,
рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рд╛ рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд╛рд░ рдХреА рдкреНрд░рддрд┐рднрд╛ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХреАред рддрдм рдореБрдЭреЗ рдЬрд╛рдиреЗ рджрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдХреА рд╕реБрд╕реНрддрддрд╛ рдФрд░ рдПрдХрд░реВрдкрддрд╛ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдордХреЛрдг, рд╕рдорд╛рди рдЕрдВрддрд░рд╛рд▓, рд╕рдЬрд╛рд╡рдЯ рдХреА рдПрдХ рдиреНрдпреВрдирддрдо - рдХреНрдпрд╛ рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдореЗрдВ рдХрдИ рджрд░реНрдЬрди рд╕рдВрд╢реЛрдзрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдзрд╛рд░, рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдХрд╛ рд╕рд╛рд░, рдЕрднреА рднреА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдореИрдВ рдмреИрда рдЧрдпрд╛ рдФрд░
рдпреВрдирд┐рдЯреА 3 рдбреА рдХреЗ рддрд╣рдд C # рдореЗрдВ рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрд╛ред рдХрдЯ рдХреЗ рддрд╣рдд uv- рдХрд╛рд░реНрдб, рд╕рдмрдореЗрд╢ рдФрд░ рд╢реЗрдбреНрд╕ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рд╡рд░реНрдгрди рд╣реИред
тЦг рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рднреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреА рдХреБрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧред
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ: рдЖрдкрдХреЛ рдПрдХ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдХрд╛ рдЖрдХрд╛рд░ рдЫреЛрдЯрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓ рдХреЗ рдЧрдгрд┐рддреАрдп рдкрдХреНрд╖ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрджрд┐ рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреЛрдИ рдбрд╛рдЙрдирд╕рд╛рдЗрдб рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдЧрдЬ рдФрд░ рдПрдХ рдЕрдЪреНрдЫреА рдХрд▓реНрдкрдирд╛ рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЛрдиреЗ рдХреЛ рддреНрд░рд┐рдХреЛрдг рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ:
рдЖрдкрдиреЗ рд╢рд╛рдпрдж рд╕реБрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ 3D рдореЙрдбрд▓ рдмрд╣реБрднреБрдЬреЛрдВ рд╕реЗ рдмрдиреЗ рд╣реЛрддреЗ рд╣реИрдВред рдмрд╣реБрднреБрдЬ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рддреНрд░рд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреНрд░рд┐рднреБрдЬреЛрдВ рдХреЛ рд▓рдВрдмрд╡рдд рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдирджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ - рд╡реИрдХреНрдЯрд░ рдЬреЛ рдЧреНрд░рд╛рдлрд┐рдХ рдЗрдВрдЬрди рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓ рдХреЛ рдХреИрд╕реЗ рд░реЛрд╢рди рдХрд░рдирд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рд▓реЗрдВред рдпрджрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдкрд╛рдЯ рд╣реИ рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд░реНрдЧ рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрда рдХреЛрдиреЗ рдФрд░ рджрд╕ рддреНрд░рд┐рдХреЛрдгреЛрдВ рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЦрд┐рдбрд╝рдХреА рджреАрд╡рд╛рд░ рдореЗрдВ рдереЛрдбрд╝реА рдбреВрдм рдЧрдИ рд╣реИ, рддреЛ рдпреЗ рдЪрд╛рд░ рдФрд░ рд╢рд┐рдЦрд░ рдФрд░ рдЖрда рдФрд░ рддреНрд░рд┐рдХреЛрдг рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЖрдк рдПрдХ рдЦрд┐рдбрд╝рдХреА рджрд╛рд╕рд╛ рдпрд╛ рдлреВрд▓реЛрдВ рдХрд╛ рдПрдХ рдмреЙрдХреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ? рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдРрд╕реА рдЧрдгрдирд╛рдУрдВ рд╕реЗ, рдореЗрд░реЗ рдХрд╛рдиреЛрдВ рд╕реЗ рднрд╛рдк рдирд┐рдХрд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдЖрджрд┐рдо рдЦрд┐рдбрд╝рдХреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбрдПрдХ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдирд▓ рдХреЗ рдЪрд╛рд░ рдХреЛрдиреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡реИрдХреНрдЯрд░ рдХреЗ рдЙрддреНрдкрд╛рдж рд╕реЗ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рддреЗ рд╣реИрдВред рд╣рдо рдЦрд┐рдбрд╝рдХреА рдХреЗ рдХреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдФрд░ рдЫреЛрд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╕рдм рдХреБрдЫ рдЙрдкрдпреБрдХреНрдд рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреЛрдиреЗ рд╕реЗ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рд╕рдмрдореЗрд╢ рджреНрд╡рд╛рд░рд╛ рддреНрд░рд┐рдХреЛрдг рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдмреАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред
Mesh EntrancePanel(Vector3 vertex0, Vector3 vertex1, Vector3 vertex2, Vector3 vertex3) { var normal = Vector3.Cross((vertex1 - vertex0), (vertex2 - vertex0)).normalized; var window0 = vertex0 + (vertex3 - vertex0) * 0.25f + (vertex1 - vertex0) * 0.25f; var window1 = vertex0 + (vertex3 - vertex0) * 0.25f + (vertex1 - vertex0) * 0.75f; var window2 = vertex0 + (vertex3 - vertex0) * 0.75f + (vertex1 - vertex0) * 0.75f; var window3 = vertex0 + (vertex3 - vertex0) * 0.75f + (vertex1 - vertex0) * 0.25f; var mesh = new Mesh { vertices = new[] {vertex0, vertex1, vertex2, vertex3, window0, window1, window2, window3, window0, window1, window2, window3}, normals = new[] { normal, normal, normal, normal, normal, normal, normal, normal, normal, normal, normal, normal }, uv = new[] {new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(1, 0), new Vector2(0.25f, 0.25f), new Vector2(0.25f, 0.75f), new Vector2(0.75f, 0.75f), new Vector2(0.75f, 0.25f), new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(1, 0)}, triangles = new[] { 0, 1, 4, 4, 1, 5, 1, 2, 5, 5, 2, 6, 2, 3, 6, 6, 3, 7, 3, 0, 7, 7, 0, 4, 8, 9, 10, 10, 11, 8}, subMeshCount = 2 }; mesh.SetTriangles(new[] { 0, 1, 4, 4, 1, 5, 1, 2, 5, 5, 2, 6, 2, 3, 6, 6, 3, 7, 3, 0, 7, 7, 0, 4}, 0); mesh.SetTriangles(new[] { 8, 9, 10, 10, 11, 8 }, 1); return mesh; }
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдПрдХ рджреАрд╡рд╛рд░, рдПрдХ рдЦрд┐рдбрд╝рдХреА, рдПрдХ рд╕рд╛рдордиреЗ рдХрд╛ рджрд░рд╡рд╛рдЬрд╛ рдФрд░ рдПрдХ рдЪрдордХрддрд╛ рд╣реБрдЖ рдмрд╛рд▓рдХрдиреА рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рддреЛ рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рджреБрдЦ рд╣реБрдЖ рдФрд░ рдореИрдВрдиреЗ рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рдЕрдВрджрд░ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
тЦг рджреВрд╕рд░реА рдХреЛрд╢рд┐рд╢ред рд╕рдм рдХреБрдЫ рд╕рдВрдкрд╛рджрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╕рдмрдорд░реНрд╕ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ
рдЖрдо рддреМрд░ рдкрд░, рдЗрдВрдЬрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЛрдиреЗ, рддреНрд░рд┐рдХреЛрдг рдФрд░ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдореВрд▓ рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рд╣реИред рджреЛ рдореЙрдбрд▓, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛрдб рдореЗрдВ "рдЬрдиреНрдо" рдерд╛, рдФрд░ рджреВрд╕рд░рд╛ рдмреНрд▓реЗрдВрдбрд░ рдореЗрдВ, рдорд╣рд╛рди рджреЛрд╕реНрдд рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ sabmesh (
рд╕рдмрдореЙрдбрд▓реНрд╕? рд╕рдмрдиреЗрдЯреНрд╕? рд╕рдмрдореЗрд╢рд┐рдВрдЧреНрд╕? ) рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдореЗрдВ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рднреА рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди sabmesh рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╕рдмрдореЗрд╢ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реВрдЪреА рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдирд╣реАрдВред
рд╕рдмрдореЗрд╢ рдкрд░ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕рд╛рдордЧреНрд░реА рд▓рдЯрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд╛рдВрдЪ рдХреЛ рдЪрдордХрджрд╛рд░ рдФрд░ рджреАрд╡рд╛рд░реЛрдВ рдХреЛ рдореЛрдЯрд╛ рдмрдирд╛ рджреЗрдЧрд╛ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд╛рдлреА рд╕рд╣рдиреАрдп рд╣реИ, рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдордЧреНрд░реА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реЗрдбрд░ рдХреЙрд▓ рд╣реИ, рдФрд░ рд╕рдмрдореЗрд╢ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдШрдЯрд┐рдпрд╛ рдХрд╛рд░реНрдп рд╣реИред рдореИрдВрдиреЗ рд╕рдмрдореЗрд╢ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЦреЗрд▓рд╛ рдФрд░ рдЗрд╕ рдЙрджреНрдпрдо рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
тЦг рддреАрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ред рд╕рдореБрд░рд╛рдИ shader рдФрд░ рдмрдирд╛рд╡рдЯ рдирдХреНрд╢реЗ

рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рддрдм рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрд╣реБрднреБрдЬ рдФрд░ рдмрдирд╛рд╡рдЯ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░рд┐рднреБрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЦ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд▓рд╛рдЦ рддреНрд░рд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХреЛ рдирд┐рдЧрд▓рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпрд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдмрдирд╛рд╡рдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдПрдХ рдмрдбрд╝реЗ рдПрдХ рдореЗрдВ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдмрдирд╛рд╡рдЯ рдПрдЯрд▓рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рд╡реЗ рдХрдИ рдмрдирд╛рд╡рдЯ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ: рдПрдХ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд▓рд┐рдП рддреАрд╕рд░рд╛ред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╢реЗрдбрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдПрдХрддрд╛ рдореЗрдВ рд▓рд╛рдн рд╕рд░рд▓ рд╣реИ, рдФрд░ рдмрдирд╛рд╡рдЯ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдЯрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╢реЗрдбрд░ рдЗрд╕ рдПрдЯрд▓рд╕ рдФрд░ рдЪрдордХрджрд╛рд░ рд╕рддрд╣реЛрдВ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдирдХреНрд╢рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд╕рднреА рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рд▓рд╛рдпрд╛ред
рдЦреНрд░реБрд╢реНрдЪреЗрд╡ shader рдХреЛрдбрдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдкреЗрдХреНрдпреБрд▓рд░ рд╢реЗрдбрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдпреВрдирд┐рдЯреА рдХреЗ рд╕рд╛рде рдмрд╛рдВрдзрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдб рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд░рдВрдЧ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред
Shader "Custom/Khrushchyovka" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGBA)", 2D) = "white" {} _GlassColor ("Glass Color", Color) = (0.5, 0.5, 0.5, 1) _Shininess ("Shininess", Range (0.01, 1)) = 0.078125 _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1) _SpecTex ("Specular (RGB)", 2D) = "gray" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf BlinnPhong sampler2D _MainTex, _SpecTex; fixed4 _Color, _GlassColor; half _Shininess; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { half4 main = tex2D (_MainTex, IN.uv_MainTex); half4 spec = tex2D(_SpecTex, IN.uv_MainTex); o.Albedo = main.rgb * _Color.rgb + spec.rgb * _GlassColor.rgb; o.Gloss = spec.rgb; o.Specular = _Shininess; } ENDCG } FallBack "Diffuse" }
Wall рд╣рдо рдПрдХ рджреАрд╡рд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ
рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдЗрдорд╛рд░рдд рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рджреАрд╡рд╛рд░ рдХреЗ рд╕рд╛рде рд╣реИред рдХрдИ рдкреИрдирд▓реЛрдВ рдХреА рдПрдХ рджреАрд╡рд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рддрд░рдл рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ
рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдХрд┐ рдореЙрдбрд▓реЛрдВ рдХреЛ
рдорд┐рд▓рд╛рддрд╛ рдерд╛ ред рдореЙрдбрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЙрдиреНрд╣реЗрдВ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдореИрдЯреНрд░рд┐рд╕ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдореЙрдбрд▓реНрд╕ рдХреЛ рдШреБрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдШреБрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рддрд░реНрдХ рд╕рд░рд▓ рд╣реИ: рдЪрдХреНрд░ рдореЗрдВ рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдореЙрдбрд▓ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреВрд░реА рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рджреАрд╡рд╛рд░ рдорд┐рд▓рддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреА рджреАрд╡рд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдПрдХ рдкреИрдирд▓ рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдкреИрдирд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рдмрд╛рдж рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдореЗрдВ рдкреИрдирд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ рдХреЗ рд╣реИрдВред рдЬреНрдпрд╛рджрд╛ рдкрд░реЗрд╢рд╛рди рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рднреА рдкреНрд▓реЗрдЯреЛрдВ рдХреЛ рджреЛ рдЖрдХрд╛рд░реЛрдВ рдореЗрдВ рдмрдирд╛рдпрд╛: 2.5 рдореАрдЯрд░ рдФрд░ 3 рдореАрдЯрд░ рд▓рдВрдмрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдХрд╛рд░ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рддреБрд░рдВрдд рд╕рдордЭрджрд╛рд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХреЗред
рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд▓реЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде, рджреА рдЧрдИ рд▓рдВрдмрд╛рдИ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рднрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХрд╛ рдЕрдкрдирд╛ рдирд╛рдо рд╣реИ -
рд╕рдмрд╕реЗрдЯ рдпреЛрдЧ рд╕рдорд╕реНрдпрд╛ ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЪреБрдирд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЙрдкрд▓рдмреНрдз рдкреИрдирд▓ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ рдФрд░ рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рднрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдФрд░ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдорддрд▓рдм рдкрд╣рд▓реЗ рд╕рд░рдгреА рд╕реЗ рдПрдХ рд╣реА рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдкреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдкрд╣рд▓рд╛ рд╕рд░рдгреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: {3, 2.5f}ред рдФрд░ 11 рдореАрдЯрд░ рдХреЗ рдЦрдВрдб рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: {2, 2}ред рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдкреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рд╣реИред
рдкреВрд░реНрдгрд╛рдВрдХ рдЦрдВрдб рдХреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдкреИрдирд▓ рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реЗ рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реЗрд╖ рдХреЛ рдЪрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╢реЗрд╖ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реЗ рд╕рд░рдгреА рдореЗрдВ рд╣реИред рдпрджрд┐ рд╢реЗрд╖ рд╢реВрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреИрдирд▓ рдЗрд╕реЗ рдУрд╡рд░рд▓реИрдк рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдмрдбрд╝реЗ рдкреИрдирд▓ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рд╢реЗрд╖ рдореЗрдВ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╕реВрдЪреА рдореЗрдВ рд╢реЗрд╖ рдФрд░ рдЕрдЧрд▓реЗ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рдСрдкрд░реЗрд╢рди рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рд╣рдо рдмрдбрд╝реЗ рдкреИрдирд▓реЛрдВ рдХреЛ рддрдм рддрдХ рдмрд╛рд╣рд░ рдлреЗрдВрдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рджреВрд╕рд░реЗ рд╕рд░рдгреА рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреИрдирд▓ рдкрд╣рд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛ, рдпрд╛ рд╢реЗрд╖ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛрдбрдЙрдкрд░реЛрдХреНрдд рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢реЗрд╖ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдкреИрдирд▓ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ, рддреЛ рдПрдХ рдЫреЛрдЯрд╛ рдкреИрдирд▓ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
int[] ExteriorWallSizesDraft(float remainder, int[] draft = null, int startIndex = 0) { if (draft == null) { draft = new int[panels.Length]; for (int i = 0; i < draft.Length; i++) { draft[i] = 0; } } if (remainder < panels[panels.Length - 1]) { draft[draft.Length - 1] = 1; return draft; } for (var i = startIndex; i < panels.Length; i++) { draft[i] += (int)(remainder / panels[i]); remainder %= panels[i]; } if (remainder > 0) { for (var i = 0; i < draft.Length; i++) { if (draft[i] != 0) { if (i == draft.Length - 1) { return draft; } draft[i]--; remainder += panels[i]; startIndex = i+1; break; } } draft = ExteriorWallSizesDraft(remainder, draft, startIndex); } return draft; }
рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рддрдиреА рдХреЛрд╢рд┐рд╢ рдХреА, рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреЗ рдкреИрдирд▓реЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрд╛, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдХреЛ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣
рдлрд┐рд╢рд░ - рдпреЗрдЯреНрд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд┐рд╢реНрд░рдг рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рднреНрдп рдкрд░рд┐рдгрд╛рдо рдирд┐рдХрд▓рд╛ред

тЦг рд╣рдо рдПрдХ рдореБрдЦреМрдЯрд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ
рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдХреА рд╡рд┐рднрд┐рдиреНрди рдордВрдЬрд┐рд▓реЛрдВ рдкрд░, рд╡рд┐рднрд┐рдиреНрди рдкреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реА рдордВрдЬрд┐рд▓ рдкрд░ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдФрд░ рдЦрд╛рд▓реА рджреАрд╡рд╛рд░реЗрдВ рд╣реИрдВ, рджреВрд╕рд░реА рдордВрдЬрд┐рд▓ рдкрд░ рдмрд╛рд▓рдХрдирд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЗрдорд╛рд░рдд рдореЗрдВ рдПрдХ рддрд╣рдЦрд╛рдиреЗ рдФрд░ рдХрднреА-рдХрднреА рдПрдХ рдЕрдЯрд╛рд░реА рд╣реИред рдПрдХ рдореБрдЦреМрдЯрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рджреАрд╡рд╛рд░реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рдлрд░реНрд╢ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рджреЛ рдЖрдпрд╛рдореА рд╕рд░рдгреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдордВрдЬрд┐рд▓ рдХреЗ рд╕рд░рдгреА рдореЗрдВ рдкреИрдирд▓ рдкреНрд░рдХрд╛рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрдкрдпреБрдХреНрдд рдкреИрдирд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдлреНрд░рдВрдЯ рдлреЗрд╕ рдХреЗ рд▓рд┐рдП, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рднреВрддрд▓ рддрд▓рдШрд░ рддрд╣рдЦрд╛рдиреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред рдкрд╣рд▓реА рдордВрдЬрд┐рд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИред рджреВрд╕рд░реА рдордВрдЬрд┐рд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛ рдХреЙрдкреА рдХрд░рддреА рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреБрдЫ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЛ рдмрд╛рд▓рдХрдиреА рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреАрд╕рд░реА рдордВрдЬрд┐рд▓ рдФрд░ рдКрдкрд░ рдмрд╕ рджреВрд╕рд░реА рдордВрдЬрд┐рд▓ рдХреЗ рдкреИрдЯрд░реНрди рдХреЛ рдЫрдд рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВред рдпрджрд┐ рдХреЛрдИ рдЕрдЯрд╛рд░реА рд╣реИ, рддреЛ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдЯрд╛рд░реА рдкреИрдирд▓ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рд▓рдХрдирд┐рдпреЛрдВ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдмрджрд╕реВрд░рдд рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЗрдВрджреНрд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдордорд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЪрдХреНрд░ рдореЗрдВ рдореБрдЦреМрдЯрд╛ рдХреЗ рджреЛрдиреЛрдВ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдмрд╛рд▓реНрдХрдирд┐рдпреЛрдВ рдХреЛ рддреБрд░рдВрдд рдЬрдЧрд╣ рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рд╕рд╛рдордиреЗ рдХреА рдУрд░ рдХреА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рднреВрддрд▓ рдкрд░ рдЦрд╛рд▓реА рджреАрд╡рд╛рд░реЗрдВ рдФрд░ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рд╕рдордорд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдВрдд рдХреА рджреВрд╕рд░реА рдордВрдЬрд┐рд▓ рдкрд░, рд╕рд╛рдордиреЗ рдХреА рдУрд░ рдХреА рддрд░рд╣ рдХреБрдЫ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ, рдмрд╛рд▓рдХрдиреА рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреА рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреЗрдВрджреНрд░реАрдп рдкреИрдирд▓реЛрдВ рдкрд░, рдЪрд░рдо рдкреИрдирд▓ рдкрд░, рдмрд╛рд▓рдХрдирд┐рдпрд╛рдВ рдЕрддреНрдпрдВрдд рджреБрд░реНрд▓рдн рд╣реИрдВред
рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рджреНрд╡рд╛рд░ рд╣реИред рдпрджрд┐ рдЖрдк рджрд░рд╡рд╛рдЬреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдкреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреНрд▓рд╕ рдПрдХ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрди рдЦрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкрдХреЛ рджрд░рд╡рд╛рдЬреЗ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╣реЛрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдореЗрдВ рднрд╡рди рдХрд╛ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рдд рд╣реИ, рддрд╕реНрд╡реАрд░реЛрдВ рдФрд░ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдореИрдВ рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ рд╣реВрдВред рднреВрддрд▓ рдкрд░ рдореБрдЦреНрдп рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рд╣реИ, рдЕрдЧрд▓реА рдордВрдЬрд┐рд▓ рдкрд░ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢реАрд░реНрд╖ рдордВрдЬрд┐рд▓ рдкрд░, рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЦрд╛рд▓реА рдХрдо рдкреИрдирд▓ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЗрдорд╛рд░рддреЛрдВ рдореЗрдВ, рдореБрдЦреНрдп рджреНрд╡рд╛рд░ рдПрдХ рдкреЛрд░реНрдЪ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдпреЛрдЬрдирд╛ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЦреМрдЯрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЛрдбрдореИрдВ рдкреИрдирд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ; рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public enum PanelType { Wall, Window, Balcony, Entrance, EntranceWall, EntranceWallLast, Socle, Attic, };
рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╢рд╛рдЦрд╛ рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЪрд░ рдирд╛рдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реИрдВ, рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИред
List<List<PanelType>> FacadePattern(int panelCount, int floorCount, bool haveAttic=false, bool longFacade=false, int entrancesCount=0) { var panelPattern = new List<List<PanelType>>(); var entranceIndex = panelCount / (entrances + 1); var entranceCount = 1; for (var i = 0; i < floorCount+1; i++) { panelPattern.Add(new List<PanelType>()); for (var j = 0; j < panelCount; j++) { if (i == 0) { if (entrancesCount > 0 && j == entranceIndex && entranceCount <= entrances) { panelPattern[0].Add(PanelType.Entrance); entranceCount++; entranceIndex = panelCount*entranceCount/(entrances + 1); } else { panelPattern[0].Add(PanelType.Socle); } } else if (i == 1) { if (panelPattern[0][j] == PanelType.Entrance) { panelPattern[1].Add(PanelType.EntranceWall); } else if (longFacade) { panelPattern[1].Add(PanelType.Window); } else { panelPattern[1].Add(PanelType.Wall); } } else { panelPattern[i].Add(panelPattern[i - 1][j]); } if (i == floorCount) { if (panelPattern[i - 1][j] == PanelType.Entrance || panelPattern[i - 1][j] == PanelType.EntranceWall) { panelPattern[i][j] = PanelType.EntranceWallLast; } } } if (i == 1 && !longFacade) { for (int j = 0; j <= panelPattern[1].Count / 2; j++) { if (j != 0 && j != panelCount - 1 && Random.value > 0.5f) { panelPattern[1][j] = PanelType.Window; panelPattern[1][panelPattern[1].Count - 1 - j] = PanelType.Window; } } } if (i == 2) { for (int j = 0; j <= panelPattern[2].Count/2; j++) { if (panelPattern[2][j] == PanelType.Window && panelPattern[2][panelPattern[2].Count - 1 - j] == PanelType.Window && Random.value > 0.5f) { panelPattern[2][j] = PanelType.Balcony; panelPattern[2][panelPattern[2].Count - 1 - j] = PanelType.Balcony; } } } } if (haveAttic) { panelPattern.Add(new List<PanelType>()); for (var j = 0; j < panelCount; j++) { panelPattern[panelPattern.Count-1].Add(PanelType.Attic); } } return panelPattern; }

тЦг рд╣рдо рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ
рдЪрд╛рд░ рдкрд╣рд▓реВ рдЕрднреА рддрдХ рдПрдХ рдШрд░ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдЫрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдХреА рдЫрддреЗрдВ рдЕрд▓рдЧ рд╣реИрдВред рдлреНрд▓реИрдЯ рд╣реИрдВ, рдЧреИрдмрд▓ рд╣реИрдВ, рдлреЛрд░-рдЧреИрдмрд▓ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдирдХреА рдордВрдЬрд┐рд▓ рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рдХреА рдЫрддреЛрдВ рдХреА рддрд╕реНрд╡реАрд░реЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЫрддреЗрдВ рдирдВрдЧреА рдорд┐рд▓реАрдВред рдЖрдо рддреМрд░ рдкрд░ рдмреЛрд▓рддреЗ рд╣реБрдП, рд╡реЗрдВрдЯрд┐рд▓реЗрд╢рди рдХреБрдУрдВ рдФрд░ рдЫрдд рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдЗрдорд╛рд░рдд рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдкрд░ рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдирдЧреНрди рд╣реЛрдиреЗ рджреЛред
рдЫрдд рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдореАрдЯрд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдмрдирд╛рдП, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдмрдврд╝рд╛рдпрд╛ред
рдЫрдд рдХрд╛ рд╡рд┐рдХрд▓реНрдк switch (roofType) { case RoofType.Flat: combine.Add(RandomItem(roofFlat)); matrices.Add(Matrix4x4.TRS(roofHeight, Quaternion.identity, new Vector3(length, 1, width))); break; case RoofType.FlatOverhang: combine.Add(RandomItem(roofFlat)); matrices.Add(Matrix4x4.TRS(roofHeight, Quaternion.identity, new Vector3(length + 1, 1, width + 1))); break; case RoofType.Gabled: combine.Add(RandomItem(roofGabled)); matrices.Add(Matrix4x4.TRS(roofHeight, Quaternion.identity, new Vector3(length, 1, width + 1))); break; case RoofType.Hipped: combine.Add(RandomItem(roofHipped)); matrices.Add(Matrix4x4.TRS(roofHeight, Quaternion.identity, new Vector3(length + 1, 1, width + 1))); break; }
рд╡рд╣ рд╕рдм рд╣реИред рдЦреНрд░реБрд╢реНрдЪреЗрд╡ рддреИрдпрд╛рд░ рд╣реИред

тЦг рдирд┐рд╖реНрдХрд░реНрд╖
рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдПрдХ рдЕрдбрд╝рдЪрди рд╣реИред
CombineMeshes рди рдХреЗрд╡рд▓ рдзреАрдорд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рдВрдпреЛрдЬрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдиреЗ рдФрд░ рддреНрд░рд┐рдХреЛрдг рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рднреА рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдЦреНрд░реБрд╢реНрдЪреЗрд╡-рдЧрдЧрдирдЪреБрдВрдмреА рдЗрдорд╛рд░рдд рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддреЛ рдЪреЛрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд▓реНрджреА рд╕реЗ 65 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ рдЖрдкрдХреЛ рдЦрдВрдбрд╣рд░ рдЬреИрд╕рд╛ рдЪрд┐рддреНрд░ рдиреАрдЪреЗ рдорд┐рд▓реЗрдЧрд╛ред рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧреНрд▓реВрдЗрдВрдЧ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдФрд░ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХрддрд╛ рд╡реЗрдм рдкреНрд▓реЗрдпрд░ |
рд╡рд┐рдВрдбреЛрдЬ |
рд▓рд┐рдирдХреНрд╕ |
рдореИрдХ |
рдЧрд┐рдЯрд╣рдм рд╕реНрд░реЛрддрдмрд╛рдИрдВ рдорд╛рдЙрд╕ рдмрдЯрди - рдирдИ рдЗрдорд╛рд░рдд, Esc - рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред
рдкреА рдПрд╕ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдореЙрдбрд▓ рдХреЗ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП рдореЙрдбрд▓рд░ рдЦрд░рд╛рдм рд╣реИред