{"id":498924,"date":"2026-10-16T12:28:04","date_gmt":"2026-10-16T09:28:04","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=498924"},"modified":"2026-10-16T12:28:04","modified_gmt":"2026-10-16T09:28:04","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=498924","title":{"rendered":"\u0413\u0430\u0443\u0441\u0441\u043e\u0432\u044b \u0441\u043f\u043b\u0430\u0442\u044b \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0447\u0430\u0441\u0442\u0438\u0446: \u0440\u0430\u0437\u0440\u0443\u0448\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u0434\u043b\u044f \u0440\u043e\u0433\u0430\u043b\u0438\u043a\u0430 \u043d\u0430 Godot"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0433\u043e\u0434 \u044f \u0434\u0435\u043b\u0430\u044e \u0440\u0438\u0442\u043c-\u0440\u043e\u0433\u0430\u043b\u0438\u043a \u043d\u0430 \u0433\u0435\u043a\u0441\u0430\u0445 <strong>AsterMaster<\/strong> (Godot 4.6). \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u0434\u0435\u043c\u043e \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432 Steam, \u0430 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0438\u0433\u0440\u044b \u0442\u0435 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:<\/p>\n<ul>\n<li>\n<p><strong>Steam:<\/strong> <a href=\"https:\/\/store.steampowered.com\/app\/5095060\/\" rel=\"noopener nofollow\">store.steampowered.com\/app\/5095060<\/a> \u2014 \u0434\u0435\u043c\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435, 19\u201326 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0438\u0433\u0440\u0430 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 Steam Next Fest, \u0440\u0435\u043b\u0438\u0437 17 \u043d\u043e\u044f\u0431\u0440\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0430\u0439\u0442:<\/strong> <a href=\"https:\/\/aster-master.com\/\" rel=\"noopener nofollow\">aster-master.com<\/a> \u2014 \u0442\u0440\u0435\u0439\u043b\u0435\u0440, \u0431\u0435\u0441\u0442\u0438\u0430\u0440\u0438\u0439 \u043d\u0430 \u0441\u043f\u043b\u0430\u0442\u0430\u0445, \u043f\u0440\u0435\u0441\u0441-\u043a\u0438\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0438\u0433\u0440\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u0435\u043d\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445: \u043a\u043e\u0440\u043f\u0443\u0441 \u0434\u0440\u043e\u043d\u0430 \u0438\u0433\u0440\u043e\u043a\u0430 \u0438 \u0431\u043e\u0441\u0441\u043e\u0432 \u2014 \u043d\u0435 \u043c\u0435\u0448. \u042d\u0442\u043e \u043e\u0431\u043b\u0430\u043a\u043e \u0438\u0437 ~6000 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0443\u0447\u0435\u043d\u043e \u043f\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0430\u043c \u0438\u0437 Blender, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u043f\u043e\u043b\u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430 \u0438 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0432 Godot \u043e\u0434\u043d\u0438\u043c MultiMesh. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043c\u044f\u0442\u044c, \u0434\u044b\u0440\u044f\u0432\u0438\u0442\u044c, \u0440\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0443\u0441\u043a\u0438 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u2014 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435, \u0431\u0435\u0437 \u0443\u0447\u0430\u0441\u0442\u0438\u044f CPU.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/76\/e5\/95\/76e5951228fa4a63e737c9f78d3bdb9f.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/76\/e5\/95\/76e5951228fa4a63e737c9f78d3bdb9f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/76\/e5\/95\/76e5951228fa4a63e737c9f78d3bdb9f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0421\u043f\u043b\u0430\u0442-\u043a\u043e\u0440\u043f\u0443\u0441 \u0434\u0440\u043e\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0439: \u043a\u0440\u0430\u0442\u0435\u0440\u044b, \u0432\u043c\u044f\u0442\u043e\u0435 \u043d\u0443\u0442\u0440\u043e, \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043e\u0441\u043a\u043e\u043b\u043a\u0438. \u0421\u0442\u0435\u043d\u0434\u043e\u0432\u044b\u0439 \u043a\u0430\u0434\u0440, \u0432 \u0438\u0433\u0440\u0435 \u0432\u0441\u0451 \u044d\u0442\u043e \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 72 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445.<\/em> <\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0443: \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043f\u043b\u0430\u0442\u044b \u0432 \u0438\u0433\u0440\u0435, \u0433\u0434\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u0442\u043d\u044e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439; \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u00abBlender \u2192 gsplat \u2192 \u0441\u0432\u043e\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u2192 Godot Compatibility\u00bb; \u0447\u0442\u043e \u0432 \u043d\u0451\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443 (\u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b, \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0439\u043d\u0430\u044f \u0431\u0438\u043d\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u0447\u0438\u0441\u0442\u043a\u0430 \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u043e\u0432, \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 64 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438); \u043a\u0430\u043a \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f; \u0438 \u0447\u0442\u043e \u043d\u0435 \u0432\u0437\u043b\u0435\u0442\u0435\u043b\u043e \u2014 \u0441 \u0446\u0438\u0444\u0440\u0430\u043c\u0438. \u041f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0434\u0435\u043b\u0430\u043b\u0441\u044f \u043f\u043e\u0434 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b (Compatibility-\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440, half-float, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435), \u0430 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0436\u0438\u0432\u0451\u0442 \u0432 Steam \u0438 \u043d\u0430 Deck \u2014 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430 \u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435: \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u0442\u044c\u044f \u00ab\u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439 3DGS-\u0441\u043a\u0430\u043d\u0435\u0440\u00bb. \u042d\u0442\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437, \u043a\u0430\u043a \u0432\u0437\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e.<\/p>\n<h3>\u0417\u0430\u0447\u0435\u043c \u0441\u043f\u043b\u0430\u0442\u044b \u0432 \u0438\u0433\u0440\u0435, \u0433\u0434\u0435 \u0432\u0441\u0451 100 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439<\/h3>\n<p>\u0420\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u044f \u043d\u0435 \u0443\u043c\u0435\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u0440\u0430\u0433\u043e\u0432 \u0438 \u0434\u0440\u043e\u043d\u0430 \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 (Meshy). \u0412\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e, \u043d\u043e \u043f\u043e 25\u201355 \u041c\u0411 \u0445\u0430\u0439\u043f\u043e\u043b\u0438 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u0441 \u0441\u043e\u0442\u043d\u044f\u043c\u0438 \u043d\u0435\u0437\u0430\u043c\u043a\u043d\u0443\u0442\u044b\u0445 \u00ab\u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043e\u043a\u00bb \u0432\u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0441\u0442\u043d\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438. \u0412 \u0431\u0438\u043b\u0434 \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u043a\u043b\u0430\u0434\u0451\u0448\u044c, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043c\u0435\u0448 \u0441\u043a\u0443\u0447\u043d\u043e \u0443\u043c\u0438\u0440\u0430\u0435\u0442: \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e, \u0440\u0430\u0441\u0442\u0432\u043e\u0440\u0438\u043b\u0441\u044f, \u0438\u0441\u0447\u0435\u0437. \u041c\u043d\u0435 \u0436\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u0439 \u0447\u0438\u0442\u0430\u043b\u0441\u044f \u043f\u043e \u043a\u043e\u0440\u043f\u0443\u0441\u0443: \u043c\u044f\u0442\u044b\u0439 \u0431\u043e\u0440\u0442 \u2014 \u044d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043f\u043e\u043b\u043e\u0441\u043a\u0430 HP \u2014 \u044d\u0442\u043e \u043e\u0442\u0447\u0451\u0442.<\/p>\n<p>Gaussian Splatting (3DGS) \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u044b \u043e\u0431\u043b\u0430\u043a\u043e\u043c \u0430\u043d\u0438\u0437\u043e\u0442\u0440\u043e\u043f\u043d\u044b\u0445 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d: \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u044f, \u043a\u043e\u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f (\u043c\u0430\u0441\u0448\u0442\u0430\u0431 + \u043f\u043e\u0432\u043e\u0440\u043e\u0442), \u0446\u0432\u0435\u0442 \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c. \u041e\u0431\u043b\u0430\u043a\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0442 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u0437\u0430\u043c\u0438 \u043a\u0430\u043c\u0435\u0440, \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u043a\u0430\u043d\u043e\u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u042f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u044d\u0442\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b: <strong>\u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u043b\u0430\u0442 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439, \u0446\u0432\u0435\u0442\u043e\u043c \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c. \u042d\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0447\u0430\u0441\u0442\u0438\u0446 \u0432 \u0444\u043e\u0440\u043c\u0435 \u043c\u043e\u0434\u0435\u043b\u0438.<\/strong> \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c, \u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438, \u0432\u044b\u0431\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u2014 \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u0443\u0436\u0435 \u0443\u043c\u0435\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 3DGS-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d:<\/p>\n<ul>\n<li>\n<p><strong>\u0421\u0442\u0438\u043b\u044c \u2014 toon, \u0430 \u043d\u0435 \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b.<\/strong> \u0417\u043d\u0430\u0447\u0438\u0442, \u0443\u0447\u0438\u043c\u0441\u044f \u043d\u0435 \u043f\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f\u043c, \u0430 \u043f\u043e \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0430\u043c \u0441 \u0442\u043e\u0447\u043d\u044b\u043c\u0438 \u043f\u043e\u0437\u0430\u043c\u0438. COLMAP \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u044e\u0434\u0436\u0435\u0442 \u2014 \u0436\u0451\u0441\u0442\u043a\u0438\u0439.<\/strong> \u041d\u0435 \u00ab\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f\u00bb, \u0430 \u0440\u043e\u0432\u043d\u043e N \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c: 6000 \u043d\u0430 \u0431\u043e\u0441\u0441\u0430, \u043f\u0430\u0440\u0430 \u0442\u044b\u0441\u044f\u0447 \u043d\u0430 \u043c\u0435\u043b\u043e\u0447\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u043d\u0442\u0430\u0439\u043c \u2014 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 GPU.<\/strong> Compatibility-\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440 Godot, \u043f\u0435\u0440-\u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 half-float, \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u2014 \u0432\u0440\u0430\u0433. \u041d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0441\u043f\u043b\u0430\u0442\u044b \u0431\u044b\u043b\u0438 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c\u0438 \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0443\u0436\u043d\u044b \u043b\u0438\u0448\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u044b.<\/strong> \u041d\u043e\u0440\u043c\u0430\u043b\u0438 (\u0434\u043b\u044f cel-\u0441\u0432\u0435\u0442\u0430 \u0438 \u0432\u0441\u043f\u044b\u0448\u0435\u043a), \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u043a \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u00ab\u0433\u043b\u0443\u0431\u0438\u043d\u0430\u00bb \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u2014 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0443 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043d\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0414\u0435\u043d\u044c \u043f\u0435\u0440\u0432\u044b\u0439: \u043f\u044f\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u0437\u0430 \u0441\u0443\u0442\u043a\u0438<\/h3>\n<p>\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0432 \u043e\u0434\u0438\u043d \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0434\u0435\u043d\u044c, \u0438 \u0430\u0440\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/20\/65\/0b\/20650b720d29a47e9f6cb61177cc6a2c.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/20\/65\/0b\/20650b720d29a47e9f6cb61177cc6a2c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/20\/65\/0b\/20650b720d29a47e9f6cb61177cc6a2c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0422\u0440\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0440\u043e\u043d\u0430: splatfacto \u043d\u0430 toon-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445 (16 \u0442\u044b\u0441. \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d), \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u043e\u0432 (500 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432), gsplat \u0441 MCMC-\u0431\u044e\u0434\u0436\u0435\u0442\u043e\u043c (6000).<\/em> <\/p>\n<ol>\n<li>\n<p><strong>splatfacto (nerfstudio) \u043d\u0430 PBR-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445<\/strong> \u2014 41 \u0442\u044b\u0441\u044f\u0447\u0430 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d, \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b. \u041a\u0440\u0430\u0441\u0438\u0432\u043e, \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e: \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0432\u044b\u0433\u043e\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 \u043c\u0435\u0448\u0430, \u0430 \u0432 \u0438\u0433\u0440\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u0435\u043d toon.<\/p>\n<\/li>\n<li>\n<p><strong>splatfacto \u043d\u0430 cel-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445<\/strong> \u2014 16 \u0442\u044b\u0441\u044f\u0447. \u0423\u0436\u0435 \u0441\u0442\u0438\u043b\u044c, \u043d\u043e \u0431\u044e\u0434\u0436\u0435\u0442 \u043d\u0435 \u0442\u0430\u0440\u0433\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f: \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430 adaptive density control \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0433\u0434\u0435 \u0435\u0439 \u0443\u0434\u043e\u0431\u043d\u043e. \u0414\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u043a, \u0434\u043b\u044f \u0431\u043e\u0441\u0441\u0430 \u0441 \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u0442\u043e\u043b\u043f\u043e\u0439 \u2014 \u043d\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0432\u043e\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u043e\u0432.<\/strong> \u0418\u0434\u0435\u044f: \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u0441 \u0447\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0435\u0437\u043a\u043e\u0439 \u0433\u0440\u0430\u043d\u044c\u044e <code>F = (\u03a3|q|^p)^(1\/p)<\/code>, \u043c\u043e\u0440\u0444\u044f\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u043e\u043a\u0442\u0430\u044d\u0434\u0440\u0430 \u0434\u043e \u0441\u043a\u0440\u0443\u0433\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0431\u043e\u043a\u0441\u0430, \u0441 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044f\u043c\u0438 \u0438 \u00ab\u043f\u0430\u043d\u0435\u043b\u044c\u043d\u043e\u0439\u00bb \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043e\u0447\u0430\u0440\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0440\u043e\u043d \u0438\u0437 500 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0432\u0435\u0441\u043e\u043c 32 \u041a\u0411, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u2014 \u043d\u043e \u00ab\u043a\u0438\u0441\u0442\u044c\u044e\u00bb, \u0431\u0435\u0437 \u0434\u0435\u0442\u0430\u043b\u0435\u0439. \u042d\u0442\u0430 \u0432\u0435\u0442\u043a\u0430 \u0438 \u0434\u0430\u043b\u0430 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (<code>sdf_splat<\/code>), \u0438 \u043e \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0441\u0442-\u043c\u043e\u0440\u0442\u0435\u043c \u043d\u0438\u0436\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0443\u0440\u0444\u0435\u043b\u0438 \u0441 \u043c\u0435\u0448\u0430<\/strong> \u2014 \u0441\u0435\u043c\u043f\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, \u043a\u043b\u0430\u0434\u0451\u043c \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0432 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0446\u0432\u0435\u0442 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041e\u0442\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u043e \u0437\u0430 \u0447\u0430\u0441: hard-edge \u043c\u043e\u0437\u0430\u0438\u043a\u0430 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0433\u0440\u044f\u0437\u044c, \u0441\u0443\u0440\u0444\u0435\u043b\u0438 \u043d\u0435 \u0431\u043b\u0435\u043d\u0434\u044f\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u2014 \u043c\u0438\u043d\u0438-\u0442\u0440\u0435\u0439\u043d\u0435\u0440 \u043f\u043e\u0432\u0435\u0440\u0445 <\/strong><code><strong>gsplat<\/strong><\/code> \u0441 <code>MCMCStrategy(cap_max=N)<\/code>: \u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u0431\u044e\u0434\u0436\u0435\u0442, 6000 \u0441\u043f\u043b\u0430\u0442\u043e\u0432, <strong>21 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 RTX 3060<\/strong>, \u043b\u043e\u0441\u0441 \u0432\u0434\u0432\u043e\u0435 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0443 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440\u0430.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/24\/26\/f8\/2426f86522bc750af3a318ebfd1c701a.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/24\/26\/f8\/2426f86522bc750af3a318ebfd1c701a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/24\/26\/f8\/2426f86522bc750af3a318ebfd1c701a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>SDF-\u0432\u0435\u0442\u043a\u0430 \u043e\u0442 v1 \u0434\u043e v3: 500 \u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u043e\u0432 \u00ab\u043a\u0438\u0441\u0442\u044c\u044e\u00bb, \u0438\u0437\u043e-\u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c \u00ab\u0441\u0442\u0438\u043a\u0435\u0440\u0430\u043c\u0438\u00bb-\u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043a\u0430\u043c\u0438.<\/em> <\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e \u0434\u043d\u044f \u0434\u043e\u0436\u0438\u043b\u0438 \u0434\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 Blender-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445 \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u0437\u0430\u043c\u0438; \u0441\u0442\u0438\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (cel-\u0448\u0435\u0439\u0434\u0435\u0440 \u0432 Blender), \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a \u043d\u0435\u0442 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u044f\u043c\u043e\u0439 RGB;<\/p>\n<\/li>\n<li>\n<p>\u043d\u043e\u0440\u043c\u0430\u043b\u0438 <strong>\u043d\u0435 \u0443\u0447\u0430\u0442\u0441\u044f<\/strong>, \u0430 \u0441\u043d\u0430\u043f\u0430\u044e\u0442\u0441\u044f \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0448\u0430 \u043f\u043e\u0441\u043b\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 \u043e\u0442\u0441\u044e\u0434\u0430 \u0432 \u0438\u0433\u0440\u0435 \u0435\u0441\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 cel-\u0440\u0435\u043b\u0430\u0439\u0442 \u0438 \u0432\u0441\u043f\u044b\u0448\u043a\u0438 \u043e\u0442 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043d\u0442\u0443\u0440 \u043d\u0435 \u0443\u0447\u0438\u0442\u0441\u044f \u2014 \u043e\u043d screen-space \u043f\u043e\u0432\u0435\u0440\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u043d\u0434\u0435\u0440 \u0432 Godot: \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 + \u0442\u043e\u043d\u043a\u0430\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430\u044f \u00ab\u0448\u0443\u0431\u0430\u00bb \u0441 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0414\u0430\u0442\u0430\u0441\u0435\u0442: Blender headless \u0432\u043c\u0435\u0441\u0442\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439<\/h3>\n<p>\u0414\u0430\u0442\u0430\u0441\u0435\u0442 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f headless Blender: \u0438\u043c\u043f\u043e\u0440\u0442 GLB, \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043a\u0443\u0431 1.6, \u043a\u0430\u043c\u0435\u0440\u0430 \u043d\u0430 \u043e\u0440\u0431\u0438\u0442\u0435 \u0440\u0430\u0434\u0438\u0443\u0441\u0430 3.2, 1024\u00b2 \u0441 \u0430\u043b\u044c\u0444\u043e\u0439, \u0444\u043e\u0440\u043c\u0430\u0442 <code>transforms_*.json<\/code> \u043a\u0430\u043a \u0443 NeRF-\u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/65\/8a\/4e\/658a4e55e4f375830e100e793f1ddf7e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/65\/8a\/4e\/658a4e55e4f375830e100e793f1ddf7e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/65\/8a\/4e\/658a4e55e4f375830e100e793f1ddf7e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u041a\u0430\u0434\u0440\u044b \u0434\u0432\u0443\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u043d\u044f: PBR-\u0440\u0435\u043d\u0434\u0435\u0440 \u0438 cel-\u0440\u0435\u043d\u0434\u0435\u0440 \u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u0440\u043e\u043d\u0430. \u0421\u043f\u043b\u0430\u0442 \u0443\u0447\u0438\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0438\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0432\u0435\u0442 \u0438 \u0441\u0442\u0438\u043b\u044c.<\/em> <\/p>\n<pre><code class=\"python\">R = 3.2def pose(split, i, n):    golden = math.pi * (3 - math.sqrt(5))    if split == 'train':        t = (i + 0.5) \/ n        smin, smax = math.sin(math.radians(BELT_MIN)), math.sin(math.radians(50))        elev = math.asin(smin + (smax - smin) * t)   # \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u043e sin \u2014 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u043e \u043f\u043b\u043e\u0449\u0430\u0434\u0438        az = i * golden                               # \u0437\u043e\u043b\u043e\u0442\u0430\u044f \u0441\u043f\u0438\u0440\u0430\u043b\u044c \u043f\u043e \u0430\u0437\u0438\u043c\u0443\u0442\u0443    ...    return Vector((R * cos(az) * cos(elev), R * sin(az) * cos(elev), R * sin(elev)))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043e\u0442 \u00ab\u043e\u0431\u043e\u0439\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e \u043a\u0440\u0443\u0433\u0443\u00bb:<\/p>\n<p><strong>\u041f\u043e\u044f\u0441 \u044d\u043b\u0435\u0432\u0430\u0446\u0438\u0438.<\/strong> \u0418\u0433\u0440\u043e\u0432\u0430\u044f \u043a\u0430\u043c\u0435\u0440\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043f\u043e\u0434 32\u201350\u00b0 \u0441\u0432\u0435\u0440\u0445\u0443, \u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043f\u043e yaw. \u0417\u043d\u0430\u0447\u0438\u0442, \u0434\u043d\u0438\u0449\u0435 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u0430 \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 32\u00b0 \u0438 50\u00b0, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u0440\u044b\u0442\u043e \u043f\u043b\u043e\u0442\u043d\u043e. Train-\u0432\u0438\u0434\u044b \u043b\u0435\u0436\u0430\u0442 \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u0441\u043f\u0438\u0440\u0430\u043b\u044c\u044e \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u044f\u0441\u0435, val\/test \u2014 \u043d\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u0432\u0430\u0446\u0438\u044f\u0445. \u041f\u043e\u0437\u0436\u0435 \u043f\u043e\u044f\u0441 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0432\u043d\u0438\u0437 \u0434\u043e 14\u00b0 \u2014 \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u043e \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u044b.<\/p>\n<p><strong>\u0421\u0432\u0435\u0442.<\/strong> \u0421\u043f\u043b\u0430\u0442 \u0443\u0447\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0438\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0432\u0435\u0442. \u042f \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0440\u043e\u043d\u0430: <code>cel<\/code> (toon-\u0448\u0435\u0439\u0434\u0435\u0440 \u043f\u0440\u044f\u043c\u043e \u0432 Blender), <code>flat<\/code> (\u0447\u0438\u0441\u0442\u043e\u0435 \u0430\u043b\u044c\u0431\u0435\u0434\u043e \u0431\u0435\u0437 \u0441\u0432\u0435\u0442\u0430) \u0438 <code>ao<\/code> (\u0434\u0438\u0444\u0444\u0443\u0437 \u043f\u043e\u0434 \u0431\u0435\u043b\u044b\u043c \u043a\u0443\u043f\u043e\u043b\u043e\u043c \u0431\u0435\u0437 \u0441\u043e\u043b\u043d\u0446\u0430).<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/be\/d7\/74\/bed774059fd1fec28fac714b25003ac9.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/be\/d7\/74\/bed774059fd1fec28fac714b25003ac9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/be\/d7\/74\/bed774059fd1fec28fac714b25003ac9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0422\u0440\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0440\u043e\u043d\u0430 \u0438 \u0447\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u0443\u0447\u0438\u043b\u043e\u0441\u044c (\u043e\u0434\u0438\u043d \u0440\u0430\u043a\u0443\u0440\u0441, \u043e\u0434\u0438\u043d \u0431\u044e\u0434\u0436\u0435\u0442 6000). cel: toon-\u0448\u0435\u0439\u0434\u0435\u0440 \u0443\u0436\u0435 \u0432 Blender, \u043f\u043e\u043b\u043e\u0441\u044b \u0441\u0432\u0435\u0442\u0430 \u0437\u0430\u043f\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0432 \u0446\u0432\u0435\u0442 \u0441\u043f\u043b\u0430\u0442\u043e\u0432. flat: \u0430\u043b\u044c\u0431\u0435\u0434\u043e \u0431\u0435\u0437 \u0441\u0432\u0435\u0442\u0430, \u043e\u0431\u044a\u0451\u043c \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f. ao: \u043c\u044f\u0433\u043a\u043e\u0435 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u0443\u043f\u043e\u043b\u0430, \u043e\u0431\u044a\u0451\u043c \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0441 \u043d\u0435\u0442.<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/be\/45\/ba\/be45bafee537e505cd92911d23776279.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/be\/45\/ba\/be45bafee537e505cd92911d23776279.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/be\/45\/ba\/be45bafee537e505cd92911d23776279.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0422\u043e \u0436\u0435 \u0432 \u0438\u0433\u0440\u0435, \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c-cel-\u0448\u0435\u0439\u0434\u0435\u0440\u0430: cel-\u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0434\u0430\u0451\u0442 \u0434\u0432\u043e\u0439\u043d\u044b\u0435 \u043f\u043e\u043b\u043e\u0441\u044b, flat \u2014 \u043f\u043b\u043e\u0441\u043a\u0438\u0439 \u0431\u043b\u0438\u043d, ao \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0431\u044a\u0451\u043c \u0438 \u043d\u0435 \u0441\u043f\u043e\u0440\u0438\u0442 \u0441 \u0440\u0430\u043d\u0442\u0430\u0439\u043c-\u0441\u0432\u0435\u0442\u043e\u043c.<\/em> <\/p>\n<p>\u041f\u043e\u0431\u0435\u0434\u0438\u043b <code>ao<\/code>: \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u043e\u0435 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u0443\u043f\u043e\u043b\u0430 \u0434\u0430\u0451\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u0443, \u043d\u043e \u0431\u0435\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0432\u043e\u0438\u043b\u0438\u0441\u044c \u0431\u044b \u0441 cel-\u0431\u044d\u043d\u0434\u0430\u043c\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u042d\u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0446\u0435\u043f\u0442 \u043f\u043e\u0442\u043e\u043c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u0430\u0441\u043a\u0430\u0442\u0430\u043b\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u043e\u0431\u043e\u0432 \u0438 \u0431\u043e\u0441\u0441\u043e\u0432: \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 <code>diffuse(texture \u00d7 HSV)<\/code>.<\/p>\n<p>\u0413\u0440\u0430\u0431\u043b\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u043b\u0438 \u043f\u043e \u0432\u0435\u0447\u0435\u0440\u0443 \u043a\u0430\u0436\u0434\u044b\u0435:<\/p>\n<ul>\n<li>\n<p>\u0423 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 <code>TEX_IMAGE<\/code>-\u043d\u043e\u0434\u043e\u0439 \u0432 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0442\u0451\u043c\u043d\u0430\u044f ORM-\u043a\u0430\u0440\u0442\u0430 \u2014 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0432\u044b\u0448\u0435\u043b \u0447\u0451\u0440\u043d\u044b\u043c. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c: \u043e\u0442 <code>Principled BSDF<\/code> \u0438\u0434\u0442\u0438 \u043f\u043e \u0432\u0445\u043e\u0434\u0443 Base Color \u0432\u0433\u043b\u0443\u0431\u044c \u0434\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0441 \u0444\u043e\u043b\u0431\u044d\u043a\u043e\u043c \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e sRGB-\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u00ab\u0411\u043e\u0441\u0441\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u0435\u0442\u0430\u043b\u0435\u0439\u00bb.<\/strong> \u042f \u0433\u0440\u0435\u0448\u0438\u043b \u043d\u0430 \u0431\u044e\u0434\u0436\u0435\u0442 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u0438 \u043d\u0430 \u0442\u0440\u0435\u043d\u0435\u0440. \u041a\u043e\u0440\u0435\u043d\u044c \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043b\u0438\u0441\u044c \u0441 GLB \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438\u0433\u0440\u044b, \u0433\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0430\u0442\u044b \u0434\u043e 128\u00b2 \u0441\u0442\u0430\u0440\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u041f\u043e\u043b\u043d\u044b\u0435 \u0441\u043e\u0440\u0441\u044b 2048\u00b2 \u043b\u0435\u0436\u0430\u043b\u0438 \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0435. \u041c\u044b\u043b\u043e \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u2014 \u043c\u044b\u043b\u043e \u0432 \u0431\u0438\u043d\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/17\/61\/67\/1761677bf88b83839c3ae94bc7549ccf.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/17\/61\/67\/1761677bf88b83839c3ae94bc7549ccf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/17\/61\/67\/1761677bf88b83839c3ae94bc7549ccf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u043e\u0441\u0441: \u0441\u043b\u0435\u0432\u0430 \u2014 \u0441\u0442\u0430\u0440\u044b\u0439 \u0440\u0430\u043d (\u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0441 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 128\u00b2, 4500 \u0441\u043f\u043b\u0430\u0442\u043e\u0432), \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0440\u0435\u0442\u0440\u0435\u0439\u043d \u0441 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043e\u0440\u0441\u0430 (2048\u00b2, 6000). \u0421\u043d\u0438\u0437\u0443 \u0446\u0435\u043d\u0442\u0440 \u043b\u0438\u0446\u0430 \u043a\u0440\u0443\u043f\u043d\u0435\u0435. \u0411\u044e\u0434\u0436\u0435\u0442 \u0442\u043e\u0436\u0435 \u0432\u044b\u0440\u043e\u0441, \u043d\u043e \u0434\u0435\u0442\u0430\u043b\u044c \u0434\u0430\u043b \u043d\u0435 \u043e\u043d: \u043d\u0430 128\u00b2 \u0442\u0440\u0435\u043d\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u043f\u0430\u043d\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0438 \u0437\u0443\u0431\u043e\u0432.<\/em> <\/p>\n<h3>\u0422\u0440\u0435\u043d\u0435\u0440: 150 \u0441\u0442\u0440\u043e\u043a \u043f\u043e\u0432\u0435\u0440\u0445 gsplat<\/h3>\n<p>\u0412\u0435\u0441\u044c \u0442\u0440\u0435\u043d\u0435\u0440 \u2014 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043a \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c 3DGS, \u043d\u043e \u0446\u0432\u0435\u0442 \u2014 \u043f\u0440\u044f\u043c\u043e\u0439 RGB \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0443, \u0431\u0435\u0437 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u0441\u0435\u043c\u043f\u043b\u044b \u0441 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0448\u0430 \u0441 \u0446\u0432\u0435\u0442\u043e\u043c \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0443 <code>trimesh<\/code> \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430).<\/p>\n<pre><code class=\"python\">params = torch.nn.ParameterDict({    'means':     torch.nn.Parameter(pos),    'quats':     torch.nn.Parameter(q + torch.randn_like(q) * 0.01),    'scales':    torch.nn.Parameter(torch.full((N, 3), math.log(0.03))),    'opacities': torch.nn.Parameter(torch.zeros(N)),    'colors':    torch.nn.Parameter(torch.logit(col.clamp(0.02, 0.98))),})strategy = MCMCStrategy(cap_max=N, refine_start_iter=500,                        refine_stop_iter=steps - 1000, refine_every=100)for step in range(steps):    vi = np.random.randint(n_views)    # \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u044b\u0439 \u0444\u043e\u043d \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u2014 \u0430\u043d\u0442\u0438-\u0444\u043b\u043e\u0430\u0442\u0435\u0440    bg_val = float(np.random.random())    rgb, alpha, info = rasterization(means, quats, scales.exp(), sigmoid(opacities),                                     sigmoid(colors), viewmats[vi][None], K[None],                                     width=res, height=res,                                     backgrounds=torch.full((1, 3), bg_val))    gt = imgs[vi] + (1.0 - alphas_gt[vi])[..., None] * bg_val    loss = (rgb - gt).abs().mean() + 0.3 * (alpha - alphas_gt[vi]).abs().mean()    if entropy &gt; 0:   # \u043f\u043e\u0437\u0434\u043d\u0438\u0439 annealing: \u0444\u043e\u0440\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u0441\u0442\u0430\u043a\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u0431\u0438\u043d\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438        ent_w = entropy * max(0.0, (step \/ steps - 0.6) \/ 0.4)        o = torch.sigmoid(params['opacities'])        loss = loss + ent_w * (o * (1 - o)).mean()    loss.backward()    strategy.step_post_backward(params, optimizers, state, step, info, lr=lr_means)    for opt in optimizers.values():        opt.step()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/12\/0a\/8d\/120a8d1d0801c03581b97bd40fc6546e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/12\/0a\/8d\/120a8d1d0801c03581b97bd40fc6546e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/12\/0a\/8d\/120a8d1d0801c03581b97bd40fc6546e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0425\u043e\u0434 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0431\u043e\u0441\u0441\u0430: \u0448\u0430\u0433 0 \u2014 \u0441\u0435\u043c\u043f\u043b\u044b \u0441 \u043c\u0435\u0448\u0430, \u0448\u0430\u0433 500 \u2014 \u0441\u0438\u043b\u0443\u044d\u0442 \u0441\u0445\u0432\u0430\u0447\u0435\u043d, \u0448\u0430\u0433 6000 \u2014 \u0444\u0438\u043d\u0430\u043b. \u0412\u0435\u0441\u044c \u0440\u0430\u043d \u2014 22 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/em> <\/p>\n<p>\u0422\u0440\u0438 \u043f\u0440\u0438\u0451\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0433\u0440\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c:<\/p>\n<p><strong>MCMC \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/strong> <code>MCMCStrategy<\/code> \u0438\u0437 gsplat \u043d\u0435 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0430\u0435\u0442 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d\u044b, \u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u00ab\u043c\u0451\u0440\u0442\u0432\u044b\u0435\u00bb (\u0441 \u043d\u0438\u0437\u043a\u043e\u0439 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e) \u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u00ab\u0436\u0438\u0432\u044b\u0445\u00bb \u2014 \u0447\u0438\u0441\u043b\u043e \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 <code>cap_max<\/code>. \u0411\u044e\u0434\u0436\u0435\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u0430 \u043d\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c.<\/p>\n<p><strong>\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u044b\u0439 \u0444\u043e\u043d.<\/strong> \u041f\u0435\u0440\u0432\u044b\u0439 \u0442\u0440\u0435\u043d\u0435\u0440 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u0438\u043b \u043d\u0430\u0434 \u0447\u0451\u0440\u043d\u044b\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u00ab\u0442\u0435\u043d\u0438-\u043f\u0440\u043e\u043a\u0441\u0438\u00bb: \u0442\u0451\u043c\u043d\u044b\u0439 \u0441\u043f\u043b\u0430\u0442, \u043f\u043e\u0432\u0435\u0448\u0435\u043d\u043d\u044b\u0439 \u0432 \u043f\u0443\u0441\u0442\u043e\u0442\u0435 \u043f\u043e\u0434 \u043f\u0443\u0448\u043a\u043e\u0439, \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e \u043b\u043e\u0441\u0441\u0443 (RGB-\u043e\u0448\u0438\u0431\u043a\u0430 \u2248 0, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043b\u0430\u0431\u044b\u0439 \u0430\u043b\u044c\u0444\u0430-\u0448\u0442\u0440\u0430\u0444) \u0438 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0437\u0430\u0442\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u0440\u043f\u0443\u0441. \u041d\u0430\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0444\u043e\u043d\u043e\u043c \u043b\u044e\u0431\u043e\u0439 \u0432\u043d\u0435-\u0441\u0438\u043b\u0443\u044d\u0442\u043d\u044b\u0439 \u0441\u043f\u043b\u0430\u0442 \u0434\u043e\u0440\u043e\u0433 \u043f\u043e RGB \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0440\u0430\u043a\u0443\u0440\u0441\u0435. \u0412\u043d\u0435 \u0441\u0438\u043b\u0443\u044d\u0442\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c ~25 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e ~40; \u0434\u043e\u0431\u0438\u0442\u044c \u0434\u043e \u043d\u0443\u043b\u044f \u0442\u0440\u0435\u043d\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u2014 \u043d\u0430 400 px \u0441\u0443\u0431-\u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432 \u043b\u043e\u0441\u0441\u0435 \u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0444\u043e\u043d\u0435.<\/p>\n<p><strong>\u042d\u043d\u0442\u0440\u043e\u043f\u0438\u0439\u043d\u044b\u0439 \u0448\u0442\u0440\u0430\u0444 \u043d\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c.<\/strong> <code>o\u00b7(1\u2212o)<\/code> \u0441 \u043f\u043e\u0437\u0434\u043d\u0438\u043c annealing (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 40% \u0448\u0430\u0433\u043e\u0432) \u0432\u044b\u0434\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u043a 0 \u0438\u043b\u0438 1. \u0412 \u043a\u043e\u043d\u0446\u0435 ~98% \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b. \u042d\u0442\u043e \u043d\u0435 \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0430 \u2014 \u044d\u0442\u043e \u043a\u043b\u044e\u0447 \u043a \u0440\u0435\u043d\u0434\u0435\u0440\u0443 \u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0438\u0436\u0435. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0448\u0442\u0440\u0430\u0444 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430, \u043e\u043d \u0432\u043e\u044e\u0435\u0442 \u0441 \u0430\u043b\u044c\u0444\u0430-\u043b\u043e\u0441\u0441\u043e\u043c \u043d\u0430 \u043c\u044f\u0433\u043a\u0438\u0445 \u043a\u0440\u0430\u044f\u0445 \u0441\u0438\u043b\u0443\u044d\u0442\u0430 \u0438 \u0444\u043e\u0440\u043c\u0430 \u00ab\u043d\u0435 \u0443\u0441\u0442\u0430\u043a\u0430\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 post-hoc snap \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439: \u0434\u043b\u044f \u0446\u0435\u043d\u0442\u0440\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043f\u043b\u0430\u0442\u0430 \u0438\u0449\u0435\u0442\u0441\u044f \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u0435\u0448\u0435 (<code>trimesh.proximity.ProximityQuery<\/code>), \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0441 \u0444\u0435\u0439\u0441\u0430. \u041d\u043e\u0440\u043c\u0430\u043b\u0438 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043b\u043e\u0441\u0441\u0435 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u044f\u0442 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0435, \u043d\u043e \u0434\u0430\u044e\u0442 \u0432 \u0438\u0433\u0440\u0435 \u0447\u0435\u0441\u0442\u043d\u044b\u0439 cel-\u0441\u0432\u0435\u0442 \u0438 \u0432\u0441\u043f\u044b\u0448\u043a\u0438.<\/p>\n<p>\u0426\u0438\u0444\u0440\u044b: 6000 \u0448\u0430\u0433\u043e\u0432 \u043f\u0440\u0438 400\u00b2 \u2014 <strong>21\u201322 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 RTX 3060<\/strong>, \u043b\u043e\u0441\u0441 0.003\u20130.011 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u043e\u0434\u0435\u043b\u0438. \u0420\u0435\u0442\u0440\u0435\u0439\u043d \u0432\u0441\u0435\u0445 \u043f\u044f\u0442\u0438 \u0431\u043e\u0441\u0441\u043e\u0432 \u0431\u0430\u0442\u0447\u0435\u043c \u2014 \u0442\u0440\u0438 \u043c\u0438\u043d\u0443\u0442\u044b. \u042d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b, \u0431\u044e\u0434\u0436\u0435\u0442\u044b \u0438 \u0448\u0442\u0440\u0430\u0444\u044b \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u043c\u0438: \u0446\u0438\u043a\u043b \u00ab\u043f\u043e\u043c\u0435\u043d\u044f\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u00bb \u043a\u043e\u0440\u043e\u0447\u0435, \u0447\u0435\u043c \u043a\u043e\u0444\u0435.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/39\/cf\/2a\/39cf2a18ad3fb5ae55bb9d8ebed2c765.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/39\/cf\/2a\/39cf2a18ad3fb5ae55bb9d8ebed2c765.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/39\/cf\/2a\/39cf2a18ad3fb5ae55bb9d8ebed2c765.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0414\u0432\u0430 \u0431\u043e\u0441\u0441\u0430 \u0438\u0437 \u0434\u0435\u043c\u043e \u043f\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u043a\u0443\u0440\u0441\u0430, \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u043f\u043e 6000 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u2014 \u00ab\u0441\u043c\u043e\u0442\u0440\u0438\u043d\u044b\u00bb \u043f\u0435\u0440\u0435\u0434 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u043e\u043c \u0432 \u0438\u0433\u0440\u0443 (\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e: \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u044b). \u041f\u043b\u043e\u0441\u043a\u043e\u0435 \u0430\u043b\u044c\u0431\u0435\u0434\u043e \u043f\u043e\u0434 \u043a\u0443\u043f\u043e\u043b\u044c\u043d\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u043c; cel-\u0441\u0432\u0435\u0442, \u0432\u0441\u043f\u044b\u0448\u043a\u0438 \u0438 \u043a\u043e\u043d\u0442\u0443\u0440 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0440\u0430\u043d\u0442\u0430\u0439\u043c.<\/em> <\/p>\n<h3>\u042d\u043a\u0441\u043f\u043e\u0440\u0442: \u0447\u0442\u043e \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0435\u0447\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u0435\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043c\u0435\u0448<\/h3>\n<p>\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u2014 \u0441\u0430\u043c\u044b\u0439 \u0442\u043e\u043b\u0441\u0442\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430, \u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u0423 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e 3DGS \u0438\u0437 \u00ab\u0438\u0441\u0442\u0438\u043d\u044b\u00bb \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0441\u0430\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043c\u0435\u0448 \u2014 \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0432 \u0441\u043f\u043b\u0430\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0435\u0447\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e \u043c\u0435\u0448\u0443.<\/p>\n<h4>\u042f\u0434\u0440\u043e \u0438 \u0448\u0443\u0431\u0430<\/h4>\n<p>\u0421\u043f\u043b\u0430\u0442\u044b \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438: <code>opacity &gt; 0.9<\/code> \u2014 <strong>\u044f\u0434\u0440\u043e<\/strong> (core), \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 <strong>\u0448\u0443\u0431\u0430<\/strong> (shell). \u041f\u043e\u0441\u043b\u0435 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0439\u043d\u043e\u0433\u043e \u0448\u0442\u0440\u0430\u0444\u0430 \u0448\u0443\u0431\u0430 \u2014 \u044d\u0442\u043e ~200 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u0438\u0437 6000.<\/p>\n<p>\u042f\u0434\u0440\u043e \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0435 <strong>\u043e\u043a\u0442\u0430\u0433\u043e\u043d\u044b<\/strong> \u0432 MultiMesh \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c z-\u0431\u0443\u0444\u0435\u0440\u043e\u043c, \u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0431\u0435\u0437 <code>discard<\/code>. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f\u0434\u0440\u043e \u0431\u044b\u043b\u043e \u043a\u0432\u0430\u0434\u0430\u043c\u0438 \u0441 \u0433\u0430\u0443\u0441\u0441\u043e\u0432\u044b\u043c \u0441\u043f\u0430\u0434\u043e\u043c \u0438 alpha scissor \u2014 86% \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043a\u0432\u0430\u0434\u0430 \u0443\u0445\u043e\u0434\u0438\u043b\u043e \u0432 <code>discard<\/code>, \u0430 \u043d\u0430 \u0442\u0430\u0439\u043b\u043e\u0432\u044b\u0445 GPU <code>discard<\/code> \u043b\u043e\u043c\u0430\u0435\u0442 early-Z. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u043d\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0430\u0434\u0438\u0443\u0441 \u0432\u0438\u0434\u0438\u043c\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 \u0438\u0437 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0438 \u0437\u0430\u043f\u0435\u0447\u044c \u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e \u0432 \u043e\u0441\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430:<\/p>\n<pre><code class=\"python\"># \u0421\u0442\u0430\u0440\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d: \u043a\u0432\u0430\u0434 \u043d\u0430 6\u03c3, alpha = op\u00b7exp(\u22124.5 r\u00b2), scissor 0.45# \u2192 \u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u0434\u0438\u0441\u043a r\u0302 = sqrt(ln(op\/0.5)\/4.5) \u043e\u0442 \u043f\u043e\u043b\u0443\u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0432\u0430\u0434\u0430 (~14% \u043f\u043b\u043e\u0449\u0430\u0434\u0438).# \u041d\u043e\u0432\u044b\u0439: \u043e\u043a\u0442\u0430\u0433\u043e\u043d \u043f\u043e\u0434 \u044d\u0442\u043e\u0442 \u0434\u0438\u0441\u043a (+20% \u0437\u0430\u043f\u0430\u0441\u0430), \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e discard.r_hat = np.sqrt(np.log(np.maximum(op[core], 0.55) \/ 0.5) \/ 4.5)ax0[core] *= (r_hat * 1.2)[:, None]ax1[core] *= (r_hat * 1.2)[:, None]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0428\u0443\u0431\u0430 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0441 alpha-blend \u0438 \u0433\u0430\u0443\u0441\u0441\u043e\u0432\u044b\u043c \u0441\u043f\u0430\u0434\u043e\u043c \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u2014 \u0435\u0439 \u043d\u0443\u0436\u043d\u0430 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 back-to-front. \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u044b: \u043a\u0430\u043c\u0435\u0440\u0430 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u043e \u043d\u0430\u043a\u043b\u043e\u043d\u0443, \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438. \u0417\u043d\u0430\u0447\u0438\u0442, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u2014 heading\u2019\u0430. \u041d\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f <strong>64 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438<\/strong> (\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u0441\u0435\u043a\u0442\u043e\u0440 \u0432 5.6\u00b0), \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0431\u0443\u0444\u0435\u0440 MultiMesh \u043f\u0435\u0440\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 \u043b\u0435\u0442\u0443.<\/p>\n<p>\u041f\u043e\u0431\u043e\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430: \u0441\u0442\u0430\u043b \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u043c MSAA \u2014 \u043e\u043d \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u044b\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u0442\u0430\u0433\u043e\u043d\u0430\u043c\u0438 \u0438 \u043b\u0435\u0447\u0438\u0442 \u0448\u0443\u043c \u043f\u0440\u0438 \u043f\u043e\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h4>Belly cull \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438<\/h4>\n<p>\u0420\u0430\u0437 \u043f\u043e\u044f\u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d (32\u201350\u00b0), \u0441\u043f\u043b\u0430\u0442, \u0447\u044c\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u044f\u0441\u0430, \u043d\u0435 \u0432\u0438\u0434\u0435\u043d \u043d\u0438\u043a\u043e\u0433\u0434\u0430. \u042d\u0442\u043e \u0434\u043d\u0438\u0449\u0435, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430: \u043c\u0438\u043d\u0443\u0441 ~10% \u0441\u043f\u043b\u0430\u0442\u043e\u0432. \u041e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u044f\u0434\u0440\u043e \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 (\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u00d7 \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043e\u0441\u0435\u0439), \u0447\u0442\u043e\u0431\u044b LOD \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0431\u044b\u043b \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439: <code>visible_instance_count<\/code> \u0440\u0435\u0436\u0435\u0442 \u0445\u0432\u043e\u0441\u0442 \u043c\u0435\u043b\u043e\u0447\u0438.<\/p>\n<h4>\u0427\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u0430<\/h4>\n<p>\u0412 Godot \u0443 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 MultiMesh \u0435\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c, \u0446\u0432\u0435\u0442 \u0438 \u043e\u0434\u0438\u043d <code>custom_data<\/code> vec4. \u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c \u043d\u0435\u0441\u0451\u0442 \u043e\u0441\u0438 \u0441\u043f\u043b\u0430\u0442\u0430 (\u0434\u0432\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043e\u0441\u0438 \u043a\u043e\u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0438, \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u2014 \u0442\u0440\u0435\u0442\u044c\u044f), \u0446\u0432\u0435\u0442 \u2014 \u0430\u043b\u044c\u0431\u0435\u0434\u043e \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c. \u0412 <code>custom_data<\/code> \u0437\u0430\u043f\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0447\u0438\u0441\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u043b\u0438 \u0442\u043e\u043f\u043b\u0438\u0432\u043e\u043c \u0432\u0441\u0435\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041a\u0430\u043d\u0430\u043b<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041e\u0442\u043a\u0443\u0434\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u0430\u0447\u0435\u043c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>part<\/strong> 0\u20267<\/p>\n<\/td>\n<td>\n<p align=\"left\">k-means \u043f\u043e \u043e\u0441\u0442\u0440\u043e\u0432\u0430\u043c \u043c\u0435\u0448\u0430 (\u043e\u0441\u0442\u0440\u043e\u0432\u0430 \u043d\u0435 \u0440\u0432\u0443\u0442\u0441\u044f) \u0438\u043b\u0438 \u0440\u0443\u0447\u043d\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0436\u0451\u0441\u0442\u043a\u0430\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0433\u0440\u0443\u043f\u043f, \u043f\u0435\u0440-\u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0443\u0440\u043e\u043d, \u043d\u0435\u0440\u0430\u0437\u0440\u0443\u0448\u0430\u0435\u043c\u044b\u0435 \u043f\u0443\u0448\u043a\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>emis<\/strong> 0\u20261<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0446\u0432\u0435\u0442\u0443: \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u044b\u0439 + \u044f\u0440\u043a\u0438\u0439 + <em>\u0440\u0435\u0434\u043a\u0438\u0439<\/em> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438, \u0448\u0435\u0432\u0440\u043e\u043d\u044b, \u043b\u0438\u043d\u0437\u044b \u2014 \u0442\u043e, \u0447\u0442\u043e \u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f \u0438 \u0433\u0430\u0441\u043d\u0435\u0442 \u0441 \u0438\u0437\u043d\u043e\u0441\u043e\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>ao<\/strong> 0\u20261<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u0430\u044f \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0430 \u0438\u0437 24 \u043b\u0443\u0447\u0435\u0439 \u043f\u043e \u043c\u0435\u0448\u0443 (embree)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043c\u0430\u0441\u043a\u0430 \u00ab\u0433\u043b\u0443\u0431\u0438\u043d\u044b\u00bb: \u0441\u0432\u0435\u0442 \u0438\u0437 \u0449\u0435\u043b\u0435\u0439 \u043f\u0440\u0438 \u0437\u0430\u0440\u044f\u0434\u0435, \u043d\u0443\u0442\u0440\u043e \u043f\u0440\u0438 \u0440\u0430\u0437\u043b\u043e\u043c\u0430\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>edge<\/strong> 0\u20261<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u043f\u0443\u043a\u043b\u044b\u0435 vertex defects \u043c\u0435\u0448\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u0440\u043e\u043c\u043a\u0438 \u043f\u0430\u043d\u0435\u043b\u0435\u0439, \u0438\u0437\u043d\u043e\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u0440\u043e \u00ab\u0440\u0435\u0434\u043a\u043e\u0441\u0442\u044c\u00bb \u0432 \u044d\u043c\u0438\u0441\u0441\u0438\u0438 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u043a. \u041f\u0435\u0440\u0432\u0430\u044f \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430 \u00ab\u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e + \u044f\u0440\u043a\u043e\u00bb \u0437\u0430\u0436\u0433\u043b\u0430 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e-\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0431\u043e\u0441\u0441\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c: 2572 \u0441\u0432\u0435\u0442\u044f\u0449\u0438\u0445\u0441\u044f \u0441\u043f\u043b\u0430\u0442\u0430 \u0438\u0437 4200. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u0430\u043a\u0446\u0435\u043d\u0442\u0430 \u2014 \u0446\u0432\u0435\u0442, \u0434\u0430\u043b\u0451\u043a\u0438\u0439 \u043e\u0442 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0430. \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f rarity \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c 877: \u043e\u0447\u043a\u0438, \u043c\u043e\u043b\u043d\u0438\u0438, \u0447\u0435\u043b\u044e\u0441\u0442\u044c.<\/p>\n<h4>\u0420\u0435\u043c\u043e\u043d\u0442 winding\u2019\u0430 \u2014 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0433\u0430<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0431\u043e\u0441\u0441\u043e\u0432 \u043d\u0430 \u0441\u043f\u043b\u0430\u0442\u044b \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u043f\u0440\u0438 \u0443\u0440\u043e\u043d\u0435 \u043d\u0430\u0447\u0430\u043b \u00ab\u0432\u044b\u043b\u0435\u0437\u0430\u0442\u044c \u0441\u043f\u043b\u0430\u0442\u0430\u043c\u0438 \u043d\u0430\u0440\u0443\u0436\u0443\u00bb: \u043a\u0440\u0430\u0442\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0434\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u043f\u043b\u0430\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u044c \u0432\u0434\u043e\u043b\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u0438, \u0430 \u043e\u043d\u0438 \u0432\u044b\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c. \u0414\u0438\u0430\u0433\u043d\u043e\u0437: GLB \u0438\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0438\u0437 \u0441\u043e\u0442\u0435\u043d \u043c\u0435\u043b\u043a\u0438\u0445 \u043d\u0435\u0437\u0430\u043c\u043a\u043d\u0443\u0442\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442-\u00ab\u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043e\u043a\u00bb (\u0443 Crimson Skull \u0438\u0445 558), \u0438 \u0443 ~40% \u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043e\u043a \u043e\u0431\u0445\u043e\u0434 \u0432\u0435\u0440\u0448\u0438\u043d \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u043d\u0443\u0442\u0440\u044c. Post-hoc snap \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u043f\u0435\u0440\u0435\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438, \u0430 \u043e\u0442 \u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0435\u043b\u043e \u0432\u0441\u0451: cel-\u0431\u044d\u043d\u0434, AO-\u043b\u0443\u0447\u0438 (\u0441\u0442\u0440\u0435\u043b\u044f\u043b\u0438 \u0432 \u0442\u043e\u043b\u0449\u0443), belly cull, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0440\u0430\u0442\u0435\u0440\u043e\u0432.<\/p>\n<p><code>trimesh.repair.fix_normals<\/code> \u0437\u0434\u0435\u0441\u044c \u0431\u0435\u0441\u0441\u0438\u043b\u0435\u043d \u2014 \u043e\u0431\u044a\u0451\u043c\u043d\u043e\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430\u0445. \u0421\u0432\u043e\u0439 \u0440\u0435\u043c\u043e\u043d\u0442 \u0437\u0430\u043d\u044f\u043b \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a: \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043b\u043e\u0449\u0430\u0434\u043d\u043e-\u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u0435 <code>dot(normal, center \u2212 centroid)<\/code>, \u0435\u0441\u043b\u0438 \u0441\u0443\u043c\u043c\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u2014 \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c winding \u0432\u0441\u0435\u0439 \u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043a\u0438; \u0437\u0430\u0442\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u0444\u043b\u0438\u043f\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u0443\u0436\u0435 \u0447\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u0444\u0435\u0439\u0441\u0443. \u0423 \u0447\u0435\u0440\u0435\u043f\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u043b\u043e\u0441\u044c 56% \u0441\u043f\u043b\u0430\u0442\u043e\u0432, \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0431\u043e\u0441\u0441\u0430 45%.<\/p>\n<pre><code class=\"python\">comps = trimesh.graph.connected_components(mesh.face_adjacency, min_len=1,                                           nodes=np.arange(len(mesh.faces)))fc, fn, fa = mesh.triangles_center - mesh.centroid, mesh.face_normals, mesh.area_facesfaces = mesh.faces.copy()for cf in comps:    if np.sum(np.einsum('ij,ij-&gt;i', fn[cf], fc[cf]) * fa[cf]) &lt; 0.0:        faces[cf] = faces[cf][:, ::-1]        # \u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043a\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u044c \u2014 \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043cmesh = trimesh.Trimesh(mesh.vertices, faces, process=False)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>\u0427\u0438\u0441\u0442\u043a\u0430 \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u043e\u0432: \u0442\u0440\u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u0438 \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u043a<\/h4>\n<p>\u0424\u043b\u043e\u0430\u0442\u0435\u0440 \u2014 \u0441\u043f\u043b\u0430\u0442, \u0432\u0438\u0441\u044f\u0449\u0438\u0439 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e. \u0423 \u0446\u0435\u043b\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0445 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0447\u0451\u0440\u043d\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435; \u0432 \u0438\u0433\u0440\u0435 \u043d\u0430 \u0441\u0435\u0440\u043e\u043c \u043f\u043e\u043b\u0443 \u0430\u0440\u0435\u043d\u044b \u043e\u043d\u0438 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0443\u0441\u043e\u0440, \u0430 \u043f\u0440\u0438 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0445 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435. \u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0443 \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u0430 \u0442\u0440\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430, \u0438 \u043b\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435 \u0442\u0440\u0438:<\/p>\n<ol>\n<li>\n<p><strong>\u0414\u0430\u043b\u0435\u043a\u043e \u043e\u0442 \u043c\u0435\u0448\u0430.<\/strong> \u0414\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0434\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 p50\/p99 \u0443 \u0437\u0434\u043e\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u2014 0.013\/0.057 (\u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 \u043c\u043e\u0434\u0435\u043b\u0438 1.6); \u0432\u0441\u0451 \u0434\u0430\u043b\u044c\u0448\u0435 0.055 \u2014 \u043c\u0443\u0441\u043e\u0440.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0442\u043e\u0440\u0432\u0430\u043d.<\/strong> \u0413\u0440\u0430\u0444 \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430 \u043f\u043e grid-hash; \u0436\u0438\u0432\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u0423 \u043f\u0440\u043e\u0434-\u0430\u0432\u0430\u0442\u0430\u0440\u0430 \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b-\u043f\u0440\u0438\u0437\u0440\u0430\u043a\u0438 \u043f\u043e 22\u201324 \u0441\u043f\u043b\u0430\u0442\u0430, \u0432\u0438\u0441\u0435\u0432\u0448\u0438\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u043e\u0440\u043f\u0443\u0441\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u0422\u043e\u0440\u0447\u0438\u0442 \u0438\u0437 \u0441\u0438\u043b\u0443\u044d\u0442\u0430.<\/strong> \u041b\u0443\u0447 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u043a\u0443\u0440\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043d\u0442\u0440 \u0441\u043f\u043b\u0430\u0442\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043c\u0438\u043c\u043e \u043c\u0435\u0448\u0430. \u0421\u0435\u0442\u043a\u0430 \u0440\u0430\u043a\u0443\u0440\u0441\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u043b\u043e\u0442\u043d\u043e\u0439 \u2014 72 \u0430\u0437\u0438\u043c\u0443\u0442\u0430 \u00d7 5 \u044d\u043b\u0435\u0432\u0430\u0446\u0438\u0439: \u0444\u043b\u043e\u0430\u0442\u0435\u0440 \u0436\u0438\u0432\u0451\u0442 \u0432 \u0441\u0435\u043a\u0442\u043e\u0440\u0435 \u0443\u0436\u0435 5\u00b0, \u0430 12 \u0430\u0437\u0438\u043c\u0443\u0442\u043e\u0432 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043b\u0438 \u0442\u0440\u0438 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438 \u0432\u0438\u0441\u044f\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043b\u044e\u0441 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443: \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0441\u043f\u043b\u0430\u0442\u0430 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 200 train-\u0432\u0438\u0434\u043e\u0432; \u0435\u0441\u043b\u0438 \u0434\u0438\u0441\u043a \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u043c \u0444\u043e\u043d\u0435 \u2014 \u044d\u0442\u043e \u0444\u043b\u043e\u0430\u0442\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u043d\u0435\u0440 \u043d\u0435 \u0443\u0431\u0438\u043b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0441\u0443\u0431-\u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u044b\u0439.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/ef\/80\/49\/ef80490a4d0acb0d3b2779d8ddf9ec26.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/ef\/80\/49\/ef80490a4d0acb0d3b2779d8ddf9ec26.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/ef\/80\/49\/ef80490a4d0acb0d3b2779d8ddf9ec26.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u0430\u0434\u0440 \u0441\u0442\u0435\u043d\u0434\u0430 \u043d\u0430 \u0447\u0451\u0440\u043d\u043e\u043c \u0438 \u043d\u0430 \u0441\u0435\u0440\u043e\u043c \u0444\u043e\u043d\u0435. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u043a: \u0442\u0451\u043c\u043d\u044b\u0435 \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u044b \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b \u043d\u0430 \u0447\u0451\u0440\u043d\u043e\u043c \u2014 \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u00ab\u0440\u0435\u043d\u0434\u0435\u0440-\u0441\u0443\u0434\u0438\u043c\u043e \u0447\u0438\u0441\u0442\u043e\u00bb \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u043a\u0432\u043e\u0437\u044c \u043d\u0438\u0445. \u0421\u0438\u043b\u0443\u044d\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0443\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u043e\u043c.<\/em> <\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0438\u043a\u0441 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435 \u0432 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435, \u0430 \u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435: \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u043e\u044f\u0441 \u043a\u0430\u043c\u0435\u0440 \u0432\u043d\u0438\u0437 \u0441 32\u00b0 \u0434\u043e 14\u00b0 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e train-\u0432\u0438\u0434\u043e\u0432 \u0441\u043e 120 \u0434\u043e 200 (\u0447\u0442\u043e\u0431\u044b \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043f\u043e\u044f\u0441\u0435 \u043d\u0435 \u0440\u0430\u0437\u0436\u0438\u0436\u0438\u043b\u0430\u0441\u044c). \u041d\u0438\u0437\u043a\u0438\u0435 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0435 \u0432\u0438\u0434\u044b \u0434\u0430\u044e\u0442 \u0442\u0440\u0435\u043d\u0435\u0440\u0443 \u0441\u0443\u043f\u0435\u0440\u0432\u0438\u0437\u0438\u044e \u0441\u0438\u043b\u0443\u044d\u0442\u0430 \u0441\u043d\u0438\u0437\u0443: \u0441\u043f\u043b\u0430\u0442 \u043f\u043e\u0434 \u0441\u0442\u0432\u043e\u043b\u043e\u043c \u0442\u043e\u0440\u0447\u0438\u0442 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u043c \u0444\u043e\u043d\u0435, \u0438 \u043b\u043e\u0441\u0441 \u0435\u0433\u043e \u0443\u0431\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u043c. \u0422\u043e\u0440\u0447\u0430\u0449\u0438\u0445 \u0438\u0437 \u0441\u0438\u043b\u0443\u044d\u0442\u0430 \u0441\u043f\u043b\u0430\u0442\u043e\u0432: 18 \u0434\u043e \u0440\u0435\u0442\u0440\u0435\u0439\u043d\u0430 \u2192 9 \u043f\u043e\u0441\u043b\u0435 \u2192 7 \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043b\u0443\u044d\u0442-cull\u2019\u0430; \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u2014 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0435 \u043a\u0440\u043e\u043c\u043a\u0438 \u0442\u043e\u043d\u043a\u0438\u0445 \u0441\u0442\u0432\u043e\u043b\u043e\u0432.<\/p>\n<h4>\u0424\u043e\u0440\u043c\u0430\u0442 SPL2<\/h4>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u2014 JSON \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 <code>.bin<\/code>: \u043c\u0430\u0433\u0438\u044f <code>SPL2<\/code>, \u0442\u0440\u0438 int32 (n_core, n_shell, n_buckets), \u0437\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u044f\u0434\u0440\u0430 \u0438 \u0448\u0443\u0431\u044b \u0431\u043b\u043e\u043a\u0438 float32 <code>pos \/ ax0 \/ ax1 \/ normal \/ color \/ opacity \/ attrs<\/code>, \u0437\u0430\u0442\u0435\u043c 64 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0448\u0443\u0431\u044b int32, \u0437\u0430\u0442\u0435\u043c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u0432\u043e\u0441\u0442 <code>CHNK<\/code> (\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043a\u0443\u0441\u043a\u0438 \u2014 \u043d\u0438\u0436\u0435). \u0420\u044f\u0434\u043e\u043c \u2014 meta-\u0441\u0430\u0439\u0434\u043a\u0430\u0440: \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e GLB (\u0447\u0442\u043e\u0431\u044b \u0443\u0437\u0435\u043b-\u0441\u043f\u043b\u0430\u0442 \u0432\u0441\u0442\u0430\u0432\u0430\u043b \u0432 \u0441\u0446\u0435\u043d\u0443 \u0440\u043e\u0432\u043d\u043e \u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u043c\u0435\u0448\u0430), \u043a\u043e\u043d\u0447\u0438\u043a\u0438 \u0441\u0442\u0432\u043e\u043b\u043e\u0432, \u043e\u0441\u044c \u043f\u0443\u0448\u0435\u043a, \u0431\u043e\u043a\u0441 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u0412\u0435\u0441: \u0434\u0440\u043e\u043d \u0438\u0433\u0440\u043e\u043a\u0430 \u2014 5056 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u044f\u0434\u0440\u0430 + 203 \u0448\u0443\u0431\u044b \u2248 0.5 \u041c\u0411; \u0431\u043e\u0441\u0441\u044b \u2014 \u043f\u043e ~0.4 \u041c\u0411. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 GLB \u2014 25\u201355 \u041c\u0411.<\/p>\n<h3>\u0420\u0435\u043d\u0434\u0435\u0440 \u0432 Godot: MultiMesh, Compatibility \u0438 \u0442\u0440\u0438 \u0433\u0440\u0430\u0431\u043b\u0438<\/h3>\n<p>\u0421\u043f\u043b\u0430\u0442-\u043c\u043e\u0434\u0435\u043b\u044c \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>Node3D<\/code> \u0441 \u0434\u0432\u0443\u043c\u044f <code>MultiMeshInstance3D<\/code> (\u044f\u0434\u0440\u043e, \u0448\u0443\u0431\u0430), \u0436\u0438\u0432\u0443\u0449\u0438\u0439 \u0432 <code>SubViewport<\/code> \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u043d\u0430 \u2014 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <code>PackedByteArray.slice(...).to_float32_array()<\/code>:<\/p>\n<pre><code>var buf := FileAccess.get_file_as_bytes(bin_path)assert(buf.slice(0, 4).get_string_from_ascii() == \"SPL2\")var n_core := buf.decode_s32(4)var n_shell := buf.decode_s32(8)var n_buckets := buf.decode_s32(12)var off := 16for key in [\"core\", \"shell\"]:    var n: int = n_core if key == \"core\" else n_shell    for field in [\"pos\", \"ax0\", \"ax1\", \"normal\", \"color\"]:        parts[key][field] = buf.slice(off, off + n * 12).to_float32_array(); off += n * 12    parts[key][\"opacity\"] = buf.slice(off, off + n * 4).to_float32_array(); off += n * 4    parts[key][\"attrs\"] = buf.slice(off, off + n * 16).to_float32_array(); off += n * 16for b in n_buckets:    orders.append(buf.slice(off, off + n_shell * 4).to_int32_array()); off += n_shell * 4<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0428\u0435\u0439\u0434\u0435\u0440 \u044f\u0434\u0440\u0430 \u2014 <code>unshaded<\/code>, cel-\u0441\u0432\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u043f\u043e \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u043e\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u0438: \u0442\u0440\u0438 \u043f\u043e\u043b\u043e\u0441\u044b \u043f\u043e <code>N\u00b7L<\/code> \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u0430 \u043f\u043b\u044e\u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0441\u043f\u044b\u0448\u043a\u0430 \u043e\u0442 \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (\u0434\u0443\u043b\u043e, \u0432\u0437\u0440\u044b\u0432 \u0440\u044f\u0434\u043e\u043c) \u2014 \u0440\u0430\u0434\u0438 \u043d\u0435\u0451 \u0438 \u0437\u0430\u043f\u0435\u043a\u0430\u043b\u0438\u0441\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u0438.<\/p>\n<pre><code>float ndl = clamp(dot(v_normal, -normalize(light_dir)), 0.0, 1.0);float band = mix(0.62, 0.88, smoothstep(0.22, 0.28, ndl));   \/\/ \u0443\u0437\u043a\u0438\u0435 \u0440\u0430\u043c\u043f\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0443\u043f\u0435\u043d\u0435\u0439 \u2014 \u0430\u043d\u0442\u0438-\u043f\u043e\u043fband = mix(band, 1.12, smoothstep(0.52, 0.58, ndl));vec3 col = v_col * base_brightness * band;col += v_col * v_emis * (0.78 + 0.22 * sin(TIME * 2.3)) * 1.25;          \/\/ \u043b\u0430\u043c\u043f\u044b \u0434\u044b\u0448\u0430\u0442vec3 fd = flash_pos - v_world;                                            \/\/ \u0432\u0441\u043f\u044b\u0448\u043a\u0430 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430:float fndl = clamp(dot(v_normal, normalize(fd)), 0.0, 1.0);               \/\/ \u0436\u0451\u0441\u0442\u043a\u0438\u0439 cel-\u0431\u044d\u043d\u0434float fband = fndl &gt; 0.5 ? 1.0 : (fndl &gt; 0.2 ? 0.45 : 0.0);               \/\/ \u043e\u0442 \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430col += flash_color * flash_strength * fband \/ (1.0 + 0.15 * dot(fd, fd));<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/extt\/5c\/95\/cd\/5c95cd63093539c01ddc9ade3a382666.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/extt\/5c\/95\/cd\/5c95cd63093539c01ddc9ade3a382666.gif 780w,&#10;       https:\/\/habrastorage.org\/extt\/5c\/95\/cd\/5c95cd63093539c01ddc9ade3a382666.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0421\u0442\u0435\u043d\u0434: \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 GLB \u0438 \u0441\u043f\u043b\u0430\u0442-\u043a\u043e\u0440\u043f\u0443\u0441 \u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435, \u043e\u0431\u043e\u0440\u043e\u0442 \u043f\u043e yaw. \u0421\u043f\u043b\u0430\u0442 \u2014 \u044d\u0442\u043e 5 \u0442\u044b\u0441\u044f\u0447 \u043e\u043a\u0442\u0430\u0433\u043e\u043d\u043e\u0432 \u0441 cel-\u0441\u0432\u0435\u0442\u043e\u043c \u043f\u043e \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u044f\u043c.<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/ef\/b0\/99\/efb099f531bfe3f3e3bbe11e3b257006.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/ef\/b0\/99\/efb099f531bfe3f3e3bbe11e3b257006.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/ef\/b0\/99\/efb099f531bfe3f3e3bbe11e3b257006.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0427\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u043a\u0443\u0440\u0441\u0430 \u0441\u043f\u043b\u0430\u0442-\u0434\u0440\u043e\u043d\u0430 \u0438\u0437 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0430.<\/em> <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0433\u0440\u0430\u0431\u043b\u0438. \u0412\u0441\u0435 \u0442\u0440\u0438 \u2014 \u043f\u0440\u043e Compatibility-\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440, \u0438 \u0432\u0441\u0435 \u0442\u0440\u0438 \u0441\u0442\u043e\u0438\u043b\u0438 \u043f\u043e \u0434\u043d\u044e.<\/p>\n<p><strong>1. <\/strong><code><strong>custom_data<\/strong><\/code><strong> \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 half-float.<\/strong> \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u043e\u0441\u044c \u043d\u0435 \u043d\u0430 \u0441\u043f\u043b\u0430\u0442\u0430\u0445, \u0430 \u043d\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0435 (\u043e\u0431\u044a\u0451\u043c\u043d\u0430\u044f \u0440\u0435\u0448\u0451\u0442\u043a\u0430, \u043e \u043d\u0435\u0439 \u043d\u0438\u0436\u0435): \u043f\u043e\u0440\u0442 \u0432 Godot \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u00ab\u043a\u043e\u043d\u0444\u0435\u0442\u0442\u0438\u00bb \u043f\u0440\u0438 \u0432\u0435\u0440\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u043b\u043d\u044b\u0439 CPU-\u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441 \u0442\u043e\u0439 \u0436\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u043f\u043e\u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0444\u0444 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0446\u0435\u043b\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0431\u043e\u043b\u044c\u0448\u0435 2048 \u0442\u0438\u0445\u043e \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u044e\u0442\u0441\u044f (4482 \u2192 4480), \u0438 57% \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0447\u0438\u0442\u0430\u044e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0447\u0443\u0436\u0438\u0445 \u044f\u0447\u0435\u0435\u043a. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0437\u0430\u043a\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <strong>\u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u2264 255<\/strong>, \u0430 <code>part<\/code> \u0438 <code>emis<\/code> \u043f\u0430\u043a\u0443\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u043a\u0430\u043a <code>part*16 + emis*15<\/code>.<\/p>\n<p><strong>2. \u0413\u0430\u043c\u043c\u0430.<\/strong> \u041a\u043e\u0433\u0434\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b\u0430 \u0441 Compatibility \u043d\u0430 Forward+, \u0441\u043f\u043b\u0430\u0442\u044b \u0441\u0442\u0430\u043b\u0438 \u00ab\u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u043b\u044b\u043c\u0438\u00bb, \u0430 \u043c\u0435\u0448\u0438 \u0441 toon-\u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c \u2014 \u043d\u0435\u0442. \u041f\u0440\u043e\u0431\u0430 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u0435\u0440\u044b\u0445 \u043a\u0432\u0430\u0434\u043e\u0432 \u0432 SubViewport \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430: GL Compatibility \u2014 \u0447\u0438\u0441\u0442\u044b\u0439 gamma-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 0.5 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 0.502), \u0430 Forward+ \u0442\u0440\u0430\u043a\u0442\u0443\u0435\u0442 raw-\u0432\u0445\u043e\u0434\u044b \u043a\u0430\u043a \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0438 sRGB-\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 (0.5 \u2192 0.737), \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e <code>source_color<\/code>-\u0432\u0445\u043e\u0434\u044b. \u0421\u043f\u043b\u0430\u0442\u044b \u0431\u0435\u0440\u0443\u0442 \u0446\u0432\u0435\u0442 \u0438\u0437 instance COLOR \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u2014 \u0432\u043e\u0442 \u0438 \u0441\u0432\u0435\u0442\u043b\u0435\u043b\u0438 \u043f\u043e \u043a\u0440\u0438\u0432\u043e\u0439. \u0424\u0438\u043a\u0441: \u0432\u0441\u0435 \u0432\u0445\u043e\u0434\u044b raw, \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0432 \u0433\u0430\u043c\u043c\u0430-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043a\u0430\u043a \u0442\u044e\u043d\u0438\u043b\u043e\u0441\u044c, \u0444\u0438\u043d\u0430\u043b \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439 <code>gamma_out()<\/code> \u0441 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c.<\/p>\n<p><strong>3. <\/strong><code><strong>.bin<\/strong><\/code><strong> \u2014 \u043d\u0435 \u0440\u0435\u0441\u0443\u0440\u0441 Godot.<\/strong> \u0411\u0435\u0437 \u044f\u0432\u043d\u043e\u0433\u043e include-\u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0435\u0433\u043e \u043c\u043e\u043b\u0447\u0430 \u043d\u0435 \u043a\u043b\u0430\u0434\u0451\u0442 \u0432 \u0431\u0438\u043b\u0434. \u041d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0436\u0438\u043b\u0438 \u043d\u0430 GLB-\u0444\u043e\u043b\u0431\u044d\u043a\u0435, \u0438 \u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0432\u0430\u0442\u0430\u0440 (\u0443 \u043d\u0435\u0433\u043e \u0431\u044b\u043b JSON-\u0444\u043e\u043b\u0431\u044d\u043a). \u041f\u043e\u0439\u043c\u0430\u043b \u0437\u0430 \u0434\u0435\u043d\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0444\u043e\u043b\u0431\u044d\u043a\u0438 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u2014 \u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0431\u044b \u00ab\u043f\u0443\u0441\u0442\u044b\u0445 \u043c\u043e\u0431\u043e\u0432\u00bb \u0432 \u0440\u0435\u043b\u0438\u0437\u0435.<\/p>\n<p>\u041a \u044d\u0442\u043e\u043c\u0443 \u2014 \u0441\u0432\u043e\u0434 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u043d\u043e\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u0441\u0438\u043b\u0435 \u0438 \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u044b \u043e\u0431\u0449\u0438\u0435: \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0446\u0438\u043a\u043b\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u043c\u0438, \u0445\u044d\u0448\u0438 \u0431\u0435\u0437 <code>sin<\/code> \u0432 \u0434\u043e\u043b\u0433\u043e\u0438\u0433\u0440\u0430\u044e\u0449\u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u0445, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e <code>pow<\/code> \u043d\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 DEPTH \u0438\u0437 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d5\/0c\/7c\/d50c7cc86918973860368475775f4ad0.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d5\/0c\/7c\/d50c7cc86918973860368475775f4ad0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d5\/0c\/7c\/d50c7cc86918973860368475775f4ad0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0434\u0440 \u0438\u0437 \u0434\u0435\u043c\u043e \u0438 \u0442\u0440\u0438 \u0432\u044b\u0440\u0435\u0437\u043a\u0438 \u0438\u0437 \u043d\u0435\u0433\u043e, 1:1 \u0438 \u00d73: \u0434\u0440\u043e\u043d \u0438\u0433\u0440\u043e\u043a\u0430 \u043d\u0430 \u0441\u043f\u043b\u0430\u0442\u0430\u0445, \u0431\u043e\u0441\u0441 \u043d\u0430 \u0441\u043f\u043b\u0430\u0442\u0430\u0445 \u0438 \u0440\u044f\u0434\u043e\u0432\u043e\u0439 \u043c\u043e\u0431 \u043d\u0430 GLB \u0441 toon-\u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c. \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u0441\u0435\u0439 \u0437\u0430\u0442\u0435\u0438: \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u0431\u043b\u0430\u043a\u043e \u043d\u0430 \u0441\u043e\u0442\u043d\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.<\/em> <\/p>\n<p>\u0426\u0435\u043d\u0430 \u0432 \u043a\u0430\u0434\u0440\u0435: \u0441\u043f\u043b\u0430\u0442-\u0431\u043e\u0441\u0441 \u2014 6000 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432, \u043e\u0434\u0438\u043d draw call \u043d\u0430 \u044f\u0434\u0440\u043e \u0438 \u043e\u0434\u0438\u043d \u043d\u0430 \u0448\u0443\u0431\u0443; \u043d\u0430 RTX 3060 \u0432\u0441\u044f \u0441\u0446\u0435\u043d\u0430 \u0441 \u0431\u043e\u0441\u0441\u043e\u043c \u0438 \u0442\u043e\u043b\u043f\u043e\u0439 \u0434\u0435\u0440\u0436\u0438\u0442 4.6\u20135.4 \u043c\u0441 \u043c\u0435\u0434\u0438\u0430\u043d\u044b \u043f\u0440\u0438 \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0430\u0445 \u00d72 \u0438 MSAA 8\u00d7. \u041f\u043e\u0434 Deck-\u043f\u0430\u0441\u0441 \u044f\u0434\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438 \u0441\u043f\u043b\u0430\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 <code>alpha_to_coverage<\/code> \u2014 \u0441\u0438\u043b\u0443\u044d\u0442\u044b \u0433\u043b\u0430\u0436\u0435, \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u043d\u0435\u0442, +0.4\u20130.8 \u043c\u0441 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u0445.<\/p>\n<h3>\u042d\u0444\u0444\u0435\u043a\u0442\u044b: \u0441\u043f\u043b\u0430\u0442\u044b \u043a\u0430\u043a \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b<\/h3>\n<p>\u0412\u0441\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u2014 \u043e\u0434\u0438\u043d \u0432\u0435\u0440\u0448\u0438\u043d\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u0438 \u043d\u0430\u0431\u043e\u0440 uniform\u2019\u043e\u0432; CPU \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u0438\u0442 \u0440\u0443\u0447\u043a\u0438. \u041a\u0430\u0436\u0434\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 <code>if (uniform &gt; 0)<\/code>, \u0438 \u0434\u0435\u0444\u043e\u043b\u0442\u044b \u043d\u0443\u043b\u0435\u0432\u044b\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043c\u043e\u0431 \u0438\u0445 \u043d\u0435 \u043f\u043b\u0430\u0442\u0438\u0442.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/da\/c0\/f4\/dac0f4873ac8612d1267c21cb5061121.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/da\/c0\/f4\/dac0f4873ac8612d1267c21cb5061121.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/da\/c0\/f4\/dac0f4873ac8612d1267c21cb5061121.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0422\u0440\u0438 \u043a\u0430\u043d\u0430\u043b\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430: spawn-\u0441\u0431\u043e\u0440\u043a\u0430 (\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u043b\u0451\u0442), \u0437\u0430\u0440\u044f\u0434 \u0443\u043b\u044c\u0442\u044b (\u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u0440\u0438\u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044f\u043c, \u0441\u0432\u0435\u0442 \u0441\u043e\u0447\u0438\u0442\u0441\u044f \u0438\u0437 \u0449\u0435\u043b\u0435\u0439 \u043f\u043e 1\u2212ao), \u043d\u0435\u0439\u0440\u043e-\u0440\u0430\u0441\u043f\u0430\u0434 (\u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0433\u043b\u0438\u0442\u0447 \u0446\u0435\u043b\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043f\u043e part-\u043a\u0430\u043d\u0430\u043b\u0443).<\/em> <\/p>\n<ul>\n<li>\n<p><strong>scatter \/ implode \/ assemble<\/strong> \u2014 \u0441\u043c\u0435\u0440\u0442\u044c, \u043a\u043e\u043b\u043b\u0430\u043f\u0441 \u043f\u0435\u0440\u0435\u0434 \u0434\u0435\u0442\u043e\u043d\u0430\u0446\u0438\u0435\u0439 \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u0441\u043f\u0430\u0432\u043d\u0435. \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437\u043b\u0451\u0442 \u043f\u043e \u043f\u0435\u0440-\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u043c\u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b; \u0443 scatter \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 (\u0440\u0430\u0434\u0438\u0430\u043b\u044c\u043d\u044b\u0439, \u043a\u043e\u043b\u044c\u0446\u043e \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0430\u0440\u0435\u043d\u044b, \u0444\u0435\u0439\u0435\u0440\u0432\u0435\u0440\u043a-\u0441\u0442\u043e\u043b\u0431, \u0432\u0438\u0445\u0440\u044c) \u0438 \u043a\u0438\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 bias \u043f\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \u0443\u0431\u0438\u0432\u0448\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>ripple<\/strong> \u2014 \u0443\u0437\u043a\u0438\u0439 \u0444\u0440\u043e\u043d\u0442 \u043e\u0442 \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0431\u0435\u0436\u0438\u0442 \u043f\u043e \u043a\u043e\u0440\u043f\u0443\u0441\u0443, \u0441\u0434\u0432\u0438\u0433\u0430\u044f \u0441\u043f\u043b\u0430\u0442\u044b \u043f\u043e \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u044f\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>charge<\/strong> \u2014 \u043f\u0430\u043d\u0435\u043b\u0438 \u043b\u0435\u0432\u0438\u0442\u0438\u0440\u0443\u044e\u0442 \u043f\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u0438, \u0441\u043a\u0432\u043e\u0437\u044c \u0449\u0435\u043b\u0438 \u0441\u0432\u0435\u0442\u0438\u0442 \u043d\u0443\u0442\u0440\u043e. \u041c\u0430\u0441\u043a\u0430 \u2014 <code>1 \u2212 ao<\/code>: \u0441\u0432\u0435\u0442\u044f\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435\u00bb \u0441\u043f\u043b\u0430\u0442\u044b. \u042d\u0442\u043e\u0442 \u0436\u0435 \u043a\u0430\u043d\u0430\u043b \u0432 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043a\u0440\u0430\u0441\u043a\u0435 \u0441\u0442\u0430\u043b \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u0444\u043e\u043c \u043a\u0430\u043c\u0438\u043a\u0430\u0434\u0437\u0435: \u00ab\u043f\u043e\u0434\u043d\u044f\u0442\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 = \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0432\u0430\u043d\u0451\u0442\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>link_decay<\/strong> \u2014 \u043d\u0435\u0439\u0440\u043e-\u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u044f. \u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u043d\u043e\u0439 \u00ab\u0440\u044f\u0431\u044c\u044e\u00bb \u0441\u0438\u043d\u0443\u0441\u043e\u0438\u0434\u043e\u0439 \u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u0436\u0435\u043b\u0435; \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u2014 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0433\u043b\u0438\u0442\u0447: \u0432\u0440\u0435\u043c\u044f \u043a\u0432\u0430\u043d\u0442\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u043e\u0442\u044b, \u0432 \u0441\u043b\u043e\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0445\u044d\u0448\u0435\u043c \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e \u0434\u0451\u0440\u0433\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u0443\u0445\u043d\u0435\u0442 \u0432 \u0446\u0438\u0430\u043d\u043e\u0432\u044b\u0439, \u043f\u043b\u044e\u0441 \u0440\u043e\u0441\u0441\u044b\u043f\u044c \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0445 \u00ab\u0431\u0438\u0442\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432\u00bb.<\/p>\n<\/li>\n<li>\n<p><strong>siphon<\/strong> \u2014 \u0443\u043b\u044c\u0442\u0430-\u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c: \u0434\u043e\u043b\u044f \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u043a \u0446\u0435\u043d\u0442\u0440\u0443 \u043f\u043e \u0441\u043f\u0438\u0440\u0430\u043b\u0438, \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u044f\u0441\u044c \u0432 \u043d\u0438\u0442\u044c; <code>fract<\/code>-\u0444\u0430\u0437\u0430 \u0446\u0438\u043a\u043b\u0430 \u0434\u0430\u0451\u0442 \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u0431\u0435\u0437 CPU.<\/p>\n<\/li>\n<li>\n<p><strong>part_xform<\/strong> \u2014 \u0432\u043e\u0441\u0435\u043c\u044c \u0436\u0451\u0441\u0442\u043a\u0438\u0445 \u00ab\u043a\u043e\u0441\u0442\u0435\u0439\u00bb \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0435\u0437 \u0441\u043a\u0435\u043b\u0435\u0442\u0430. Uniform-\u043c\u0430\u0441\u0441\u0438\u0432\u044b pivot\/\u043a\u0432\u0430\u0442\u0435\u0440\u043d\u0438\u043e\u043d\/offset \u043f\u043e part-\u043a\u0430\u043d\u0430\u043b\u0443: \u043a\u0440\u044b\u043b\u044c\u044f \u043a\u043e\u043c\u0430\u0440\u043e\u0432 \u043c\u0430\u0448\u0443\u0442, \u043a\u043e\u043b\u044c\u0446\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u0438 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f, \u0441\u0442\u0432\u043e\u043b\u044b \u0434\u0440\u043e\u043d\u0430 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0435.<\/p>\n<\/li>\n<\/ul>\n<pre><code>if (part_anim &gt; 0) {    int pp = clamp(int(pid), 0, 7);    vec4 q = part_quat[pp];    vec3 dv = VERTEX - part_pivot[pp];    VERTEX = part_pivot[pp] + dv + 2.0 * cross(q.xyz, cross(q.xyz, dv) + q.w * dv) + part_offset[pp];    v_normal += 2.0 * cross(q.xyz, cross(q.xyz, v_normal) + q.w * v_normal);}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u00ab\u0441\u043a\u0438\u043d\u043d\u0438\u043d\u0433 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0441\u0442\u044c\u044e \u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438\u00bb. \u0416\u0451\u0441\u0442\u043a\u0438\u0439 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u0447\u0435\u043d \u2014 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043d\u0435 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u0443\u0435\u0442, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043c\u044f\u0433\u043a\u043e\u0433\u043e \u0441\u043a\u0438\u043d\u043d\u0438\u043d\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043d\u0443\u043b \u0431\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d. \u041c\u044f\u0433\u043a\u0438\u0439 \u0441\u043a\u0438\u043d\u043d\u0438\u043d\u0433 \u044f \u043e\u0442\u0432\u0435\u0440\u0433 \u043a\u0430\u043a \u043e\u0432\u0435\u0440\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433, \u0438 \u0437\u0430 \u0442\u0440\u0438 \u043c\u0435\u0441\u044f\u0446\u0430 \u043e\u043d \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/9e\/ad\/3f\/9ead3f2ef88b7af1cf1e37ed6513d251.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/9e\/ad\/3f\/9ead3f2ef88b7af1cf1e37ed6513d251.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/9e\/ad\/3f\/9ead3f2ef88b7af1cf1e37ed6513d251.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0410\u0432\u0430\u0442\u0430\u0440 v2: \u0432\u0441\u043f\u044b\u0448\u043a\u0430 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u0442 \u043a\u043e\u043d\u0447\u0438\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0442\u0432\u043e\u043b\u0430 (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u043e\u043d\u0447\u0438\u043a\u043e\u0432 \u2014 \u0438\u0437 meta-\u0441\u0430\u0439\u0434\u043a\u0430\u0440\u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430), \u043d\u0430\u043a\u0430\u043b \u0441\u0442\u0432\u043e\u043b\u043e\u0432 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0433\u0440\u0435\u0432\u0435 \u2014 \u043f\u043e \u0440\u0430\u0434\u0438\u0443\u0441\u0443 \u043e\u0442 \u0442\u0435\u0445 \u0436\u0435 \u0442\u043e\u0447\u0435\u043a.<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/extt\/c7\/3a\/4e\/c73a4eb835e234c769fee82a906eb1f8.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/extt\/c7\/3a\/4e\/c73a4eb835e234c769fee82a906eb1f8.gif 780w,&#10;       https:\/\/habrastorage.org\/extt\/c7\/3a\/4e\/c73a4eb835e234c769fee82a906eb1f8.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0420\u043e\u0437\u0436\u0438\u0433 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f: \u0433\u043e\u043b\u0443\u0431\u0430\u044f \u044d\u043c\u0438\u0441\u0441\u0438\u044f \u043d\u0430 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u00abengine\u00bb + \u0438\u043e\u043d\u043d\u044b\u0439 \u0441\u043b\u0435\u0434 \u043a\u0430\u043f\u043b\u044f\u043c\u0438 \u0438\u0437 \u043f\u0443\u043b\u0430 debris.<\/em> <\/p>\n<h3>\u0414\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f: \u043a\u0440\u0430\u0442\u0435\u0440\u044b, \u043b\u0443\u043a\u043e\u0432\u0438\u0446\u0430, \u0433\u0440\u0430\u0444 \u043e\u043f\u043e\u0440\u044b \u0438 \u043a\u0443\u0441\u043a\u0438<\/h3>\n<p>\u0420\u0430\u0434\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0451 \u0438 \u0437\u0430\u0442\u0435\u0432\u0430\u043b\u043e\u0441\u044c. \u0414\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0436\u0438\u0432\u0451\u0442 \u0432 \u043e\u0431\u0449\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0435 (\u0430\u0432\u0430\u0442\u0430\u0440, \u0431\u043e\u0441\u0441\u044b \u0438 \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u0438\u043d \u043a\u043e\u0434) \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u044f\u0434\u0440\u043e\u043c \u043a\u0430\u043a \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0441\u043b\u043e\u0442\u043e\u0432: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0442 \u2014 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 MultiMesh, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c, \u0446\u0432\u0435\u0442 \u0438 \u043a\u0430\u043d\u0430\u043b \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<h4>\u041a\u0440\u0430\u0442\u0435\u0440\u044b<\/h4>\n<p><code>hull_hit(dmg, dir, kind)<\/code>: \u0432\u0438\u0434 \u0430\u0442\u0430\u043a\u0438 \u0437\u0430\u0434\u0430\u0451\u0442 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e. SHOT \u2014 \u0443\u0437\u043a\u0430\u044f \u043f\u043e\u043b\u043e\u0441\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u043d\u0430 \u0430\u0442\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0431\u043e\u0440\u0442\u0443 (\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u0431\u043e\u0440\u0442\u0430); BLAST \u2014 \u0448\u0438\u0440\u043e\u043a\u0430\u044f; EPICENTER (\u043c\u0438\u043d\u0430 \u043f\u043e\u0434 \u0434\u043d\u0438\u0449\u0435\u043c, \u043d\u0430\u0432\u0435\u0441\u043d\u043e\u0439 \u0441\u043d\u0430\u0440\u044f\u0434) \u0441\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u0445; MELEE \u2014 \u0432\u043c\u044f\u0442\u0438\u043d\u0430; PIERCE (\u0440\u0435\u0439\u043b\u0433\u0430\u043d) \u2014 \u0441\u043f\u0430\u043b\u043b \u043d\u0430 \u0432\u0445\u043e\u0434\u0435, \u043a\u0430\u043d\u0430\u043b \u0442\u0440\u0435\u0449\u0438\u043d \u043f\u043e \u043f\u043e\u043b\u0451\u0442\u0443 \u0431\u043e\u043b\u0432\u0430\u043d\u043a\u0438, \u043a\u0443\u0441\u043e\u043a \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435. \u0412\u044b\u0431\u0438\u0442\u044b\u0439 \u0441\u043f\u043b\u0430\u0442 \u043b\u0438\u0431\u043e \u0443\u043b\u0435\u0442\u0430\u0435\u0442 \u0432 \u043f\u0443\u043b debris (\u0440\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043a\u0430\u043b\u0451\u043d\u043d\u043e-\u0431\u0435\u043b\u044b\u043c \u0438 \u043e\u0441\u0442\u044b\u0432\u0430\u0435\u0442 \u0432 \u043f\u043e\u043b\u0451\u0442\u0435 \u043f\u043e \u0447\u0451\u0440\u043d\u043e\u043c\u0443 \u0442\u0435\u043b\u0443), \u043b\u0438\u0431\u043e \u0432\u0434\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u044c.<\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0438\u043a\u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438: <strong>\u0432\u044b\u0431\u0438\u0442\u044b\u0439 \u0441\u043f\u043b\u0430\u0442 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, \u0430 \u0432\u0434\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f = \u0442\u0451\u043c\u043d\u043e\u0435 \u0434\u043d\u043e \u043a\u0440\u0430\u0442\u0435\u0440\u0430<\/strong>. \u0418\u043d\u0430\u0447\u0435 \u0434\u044b\u0440\u044b \u043f\u0440\u043e\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0444\u043e\u043d\u043e\u043c, \u0438 \u043a\u043e\u0440\u043f\u0443\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u044b\u043c, \u0430 \u0434\u044b\u0440\u044f\u0432\u044b\u043c.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/c3\/c8\/e6\/c3c8e6a76ed53bac2890a602b3def9ec.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/c3\/c8\/e6\/c3c8e6a76ed53bac2890a602b3def9ec.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/c3\/c8\/e6\/c3c8e6a76ed53bac2890a602b3def9ec.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u041a\u0440\u0430\u0442\u0435\u0440\u044b \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0439: \u0442\u0451\u043c\u043d\u043e\u0435 \u0434\u043d\u043e, \u043e\u0431\u0443\u0433\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u0440\u043e\u043c\u043a\u0430, \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0435 \u0438\u0441\u043a\u0440\u044b \u0438\u0437 \u043f\u0443\u0441\u0442\u043e\u0442.<\/em> <\/p>\n<h4>\u041b\u0443\u043a\u043e\u0432\u0438\u0446\u0430<\/h4>\n<p>\u0418\u0434\u0435\u044f \u0438\u0437 \u043f\u043b\u0435\u0439\u0442\u0435\u0441\u0442\u0430: \u00ab\u0432\u044b\u0431\u0438\u0442\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u0432\u044b\u043b\u0435\u0442\u0430\u0435\u0442, \u0430 \u043d\u0430 \u0435\u0433\u043e \u043c\u0435\u0441\u0442\u0435 \u2014 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043d\u043e \u0440\u0435\u0436\u0435 \u0438 \u0442\u0435\u043c\u043d\u0435\u0435; \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0440\u0430\u0437\u043e\u043c \u0434\u044b\u0440\u0430 \u0433\u043b\u0443\u0431\u0436\u0435 \u0438 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435\u00bb. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0431\u0435\u0437 \u0440\u043e\u0441\u0442\u0430 \u0431\u044e\u0434\u0436\u0435\u0442\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432: \u0432\u044b\u0431\u0438\u0442\u044b\u0439 \u0441\u043b\u043e\u0442 <strong>\u0440\u0435\u0438\u043d\u043a\u0430\u0440\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0435\u043c \u0433\u043b\u0443\u0431\u0436\u0435<\/strong> \u2014 \u043f\u043e\u0437\u0438\u0446\u0438\u044f = \u043e\u0431\u0448\u0438\u0432\u043a\u0430 + inward \u00d7 \u0448\u0430\u0433 \u00d7 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, \u0433\u0434\u0435 inward \u2014 \u043c\u0438\u043d\u0443\u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u0441 \u043f\u043e\u0434\u043c\u0435\u0441\u043e\u043c \u043a \u0446\u0435\u043d\u0442\u0440\u043e\u0438\u0434\u0443, \u0430 \u0448\u0430\u0433 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d \u0442\u043e\u043b\u0449\u0438\u043d\u0435 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u0432 \u0442\u043e\u0447\u043a\u0435. \u0421\u043b\u043e\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0436\u0438\u0432\u044b\u043c \u0438 \u0441\u043d\u043e\u0432\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c \u0445\u0438\u0442\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u00ab\u0431\u0435\u0439 \u0432 \u0434\u044b\u0440\u0443 \u2014 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0439\u00bb \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0435.<\/p>\n<p>\u0421\u043b\u043e\u0438 \u2014 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430: \u0442\u0451\u043c\u043d\u0430\u044f \u043f\u043e\u0434\u043b\u043e\u0436\u043a\u0430 \u2192 \u043a\u0430\u0440\u043a\u0430\u0441 (\u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044b\u0435 \u00ab\u0448\u043f\u0430\u043d\u0433\u043e\u0443\u0442\u044b\u00bb, \u0443 \u043c\u0435\u0442\u0430\u043b\u043b\u0430 \u2014 \u043f\u043e \u0440\u0435\u0448\u0451\u0442\u043a\u0435 \u0441\u0438\u043b\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0441 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0451\u0431\u0440\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043a\u0443\u0441\u043a\u043e\u0432 \u0441\u0442\u044b\u043a\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e) \u2192 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u2192 \u043f\u043e\u0447\u0442\u0438 \u0447\u0451\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0441 \u0442\u043b\u0435\u044e\u0449\u0438\u043c\u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0438 \u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u043c\u0438 \u0438\u0441\u043a\u0440\u0430\u043c\u0438. \u0423\u0447\u0438\u0442\u044c \u0441\u043f\u043b\u0430\u0442\u044b \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u043d\u0435\u043b\u044c\u0437\u044f: \u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 GLB \u043d\u0435\u0442 ground truth \u043d\u0443\u0442\u0440\u0430, \u043e\u043d\u043e \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/extt\/73\/aa\/03\/73aa03a28f8d89d982f0e697daf33a4a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/extt\/73\/aa\/03\/73aa03a28f8d89d982f0e697daf33a4a.gif 780w,&#10;       https:\/\/habrastorage.org\/extt\/73\/aa\/03\/73aa03a28f8d89d982f0e697daf33a4a.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u041f\u044f\u0442\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0439 \u0432 \u043e\u0434\u0438\u043d \u0431\u043e\u0440\u0442: \u0434\u044b\u0440\u0430 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0439 \u0437\u0430 \u0441\u043b\u043e\u0435\u043c.<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/85\/0e\/74\/850e741a7fd3852326aabedfb4fee052.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/85\/0e\/74\/850e741a7fd3852326aabedfb4fee052.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/85\/0e\/74\/850e741a7fd3852326aabedfb4fee052.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0427\u0435\u0442\u044b\u0440\u0435 \u0441\u043b\u043e\u044f \u0432\u0433\u043b\u0443\u0431\u044c, \u0436\u0438\u043b\u044b \u0438 \u0443\u0433\u043b\u0438 \u043d\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u0435, \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0440\u043f\u0443\u0441 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0445\u0438\u043b\u0430. \u0425\u0438\u043b \u2014 \u043d\u0435 \u00ab\u043b\u0430\u0441\u0442\u0438\u043a\u00bb: \u043a\u0430\u0436\u0434\u0430\u044f \u0434\u044b\u0440\u0430 \u043f\u043e\u043c\u043d\u0438\u0442 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0437\u0430\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u044f, \u0441\u043b\u043e\u0442 \u043b\u0435\u0440\u043f\u0438\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u043e\u0431\u0448\u0438\u0432\u043a\u0435.<\/em> <\/p>\n<h4>\u0413\u0440\u0430\u0444 \u043e\u043f\u043e\u0440\u044b<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043b\u0443\u043a\u043e\u0432\u0438\u0446\u044b \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u00ab\u0432\u0438\u0441\u044f\u0447\u0438\u0435\u00bb \u0441\u043f\u043b\u0430\u0442\u044b: \u043e\u0431\u0448\u0438\u0432\u043a\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0435\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0443\u0433\u043b\u0443\u0431\u0438\u043b\u043e \u043d\u0430 \u0434\u0432\u0430 \u0441\u043b\u043e\u044f, \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u043a\u043e\u0440\u043f\u0443\u0441\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0433\u043b\u0443\u0431\u0438\u043d\u0443, \u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0430\u0440\u0438\u0442 \u043d\u0430\u0434 \u044f\u043c\u043e\u0439. \u0417\u043e\u043d\u043d\u044b\u0435 \u0441\u0432\u0438\u043f\u044b \u0432\u043e\u043a\u0440\u0443\u0433 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0443\u0434\u0430\u0440\u0430 \u044d\u0442\u043e \u043d\u0435 \u043b\u043e\u0432\u0438\u043b\u0438. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0433\u0440\u0430\u0444 \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430 \u0432\u0441\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 (grid-hash, \u0440\u0430\u0434\u0438\u0443\u0441 \u0441\u0430\u043c\u043e\u043a\u0430\u043b\u0438\u0431\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 N), \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u043c\u0435\u0440\u0442\u044c \u0438\u043b\u0438 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0442\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e (O(\u0441\u043e\u0441\u0435\u0434\u0435\u0439)) \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c: \u043e\u0442\u0440\u0435\u0437\u0430\u043d\u043d\u044b\u0439 \u043e\u0441\u0442\u0440\u043e\u0432\u043e\u043a \u0434\u043e 24 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043e\u0442\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0443\u0441\u043a\u043e\u043c, \u043d\u0435\u043e\u043f\u0451\u0440\u0442\u044b\u0439 \u0441\u043f\u043b\u0430\u0442 \u043e\u0441\u0435\u0434\u0430\u0435\u0442 \u0434\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u043d\u0443\u0442\u0440\u043e \u0433\u0430\u0441\u043d\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0435\u0433\u0438\u043e\u043d \u0432\u044b\u0431\u0438\u0442 \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0443\u044e.<\/p>\n<p>\u0418\u0437 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u0440\u0438\u0438 \u2014 \u043f\u0435\u0440-\u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0443\u0447\u0451\u0442: \u0443 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043e\u0441\u0441\u0430 \u0434\u0432\u0435 \u043f\u0443\u0448\u043a\u0438 \u2014 \u0434\u0432\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0447\u0430\u0441\u0442\u0438; \u0432\u044b\u0431\u0438\u043b 30% \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u2014 \u043f\u0440\u0430\u0432\u044b\u0439 \u0441\u0442\u0432\u043e\u043b \u0437\u0430\u043c\u043e\u043b\u0447\u0430\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0437\u044b. \u041d\u0430\u0433\u0440\u0430\u0434\u0430 \u0437\u0430 \u043f\u0440\u0438\u0446\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0441\u0442\u043e\u0438\u043b\u0430 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h4>\u041a\u0443\u0441\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043d\u0444\u0435\u0442\u0442\u0438<\/h4>\n<p>\u0412\u0435\u0440\u0441\u0438\u044f \u0432\u044b\u0448\u0435 \u0436\u0438\u043b\u0430 \u0434\u0432\u0430 \u043c\u0435\u0441\u044f\u0446\u0430 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430, \u043d\u043e \u043d\u0430 \u043f\u043b\u0435\u0439\u0442\u0435\u0441\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 \u0434\u0435\u043c\u043e \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b\u043e \u00ab\u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0448\u0435\u0439\u00bb. \u0414\u0438\u0430\u0433\u043d\u043e\u0437 \u043f\u043e \u043a\u0440\u043e\u043f\u0430\u043c: \u043f\u0435\u0440-\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 debris \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0444\u0435\u0442\u0442\u0438; \u0441\u043b\u043e\u0438 \u043b\u0443\u043a\u043e\u0432\u0438\u0446\u044b \u0431\u0435\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b; \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0443\u0440\u043e\u043d\u0430 \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u043d\u0430 \u043f\u0443\u0440\u043f\u0443\u0440\u043d\u043e-\u043a\u0440\u0430\u0441\u043d\u043e\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0435; \u043a\u0440\u043e\u043c\u043a\u0430 \u0434\u044b\u0440\u044b \u2014 \u00ab\u0432\u044b\u0435\u0434\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u00bb \u043f\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u044d\u043b\u043b\u0438\u043f\u0441\u0430\u043c. \u041e\u0442\u0432\u0435\u0442 \u2014 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u043e\u0439 \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p><strong>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b.<\/strong> \u041a\u043b\u0430\u0441\u0441 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0441\u043f\u043b\u0430\u0442\u0430 \u043f\u043e \u0430\u043b\u044c\u0431\u0435\u0434\u043e \u0438\u0437 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 (\u0440\u0435\u0446\u0435\u043f\u0442 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c: \u0445\u0438\u0442\u0438\u043d\/\u043a\u043e\u0441\u0442\u044c\/\u043f\u043b\u043e\u0442\u044c \u0443 \u043e\u0440\u0433\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u043e\u0441\u0441\u0430, \u043a\u0440\u0430\u0441\u043a\u0430\/\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445) \u0441\u043e \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e\u043c \u0441\u043e\u0441\u0435\u0434\u0435\u0439. \u0428\u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u043e\u0432: default, chitin, bone, flesh, circuit, core.<\/p>\n<p><strong>\u041a\u0443\u0441\u043a\u0438.<\/strong> k-means++ \u043f\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u043f\u043b\u043e\u0449\u0430\u0434\u043d\u043e-\u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u044b\u0439 \u2014 \u043a\u0443\u0441\u043a\u0438 \u0440\u0430\u0432\u043d\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438, \u0430 \u043d\u0435 \u0440\u0430\u0432\u043d\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0430: \u043d\u0430 \u043f\u043b\u0438\u0442\u0430\u0445 \u043a\u0443\u0441\u043e\u043a = \u043f\u043b\u0438\u0442\u0430, \u043d\u0430 \u0437\u0443\u0431\u0430\u0445 \u0438 \u043a\u043e\u0433\u0442\u044f\u0445 \u2014 \u0441\u0432\u043e\u0438 \u043c\u0435\u043b\u043a\u0438\u0435. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0432\u0430\u043d\u044b\u0435: \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u041b\u043b\u043e\u0439\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044e \u0441 \u043f\u0435\u0440-\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0434\u0436\u0438\u0442\u0442\u0435\u0440\u043e\u043c, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0445\u043e\u0434 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f. \u0420\u0430\u0437\u043c\u0435\u0440 \u0447\u0430\u043d\u043a\u0430 \u2014 \u043a\u043b\u044e\u0447 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438: 25 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u2248 10 px \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u2014 \u043d\u0435 \u0447\u0438\u0442\u0430\u043b\u043e\u0441\u044c; 100 \u2248 20 px \u2014 \u043a\u0443\u0441\u043e\u043a.<\/p>\n<p>\u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u2014 \u0432 \u0430\u043b\u044c\u0444\u0443 instance COLOR: <code>1 + chunk*8 + mat<\/code> (\u2264 2048, f16-\u0442\u043e\u0447\u043d\u043e; \u0441\u0442\u0430\u0440\u044b\u0435 \u0431\u0438\u043d\u044b \u043d\u0435\u0441\u0443\u0442 1.0 \u2192 \u043a\u0443\u0441\u043e\u043a 0 \/ \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b 0). \u0425\u0432\u043e\u0441\u0442 <code>CHNK<\/code> \u043f\u043e\u0441\u043b\u0435 SPL2 \u0441\u0442\u0430\u0440\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u043d\u0435 \u0447\u0438\u0442\u0430\u044e\u0442 \u2014 \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u0441\u043a\u0430\u0435\u0442 \u0447\u0430\u043d\u043a (\u043a\u0440\u043e\u043c\u043a\u0430 \u2192 \u043b\u0438\u043d\u0438\u044f \u0442\u0440\u0435\u0449\u0438\u043d\u044b, \u043f\u0430\u0440\u0430 \u0447\u0438\u043f\u043e\u0432), \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u043c \u0431\u044e\u0434\u0436\u0435\u0442\u0435 \u0440\u0432\u0451\u0442 \u0435\u0433\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c <strong>\u0436\u0451\u0441\u0442\u043a\u0438\u043c \u0442\u0435\u043b\u043e\u043c<\/strong>: \u043a\u0443\u0441\u043e\u043a \u043d\u0435\u0441\u0451\u0442 \u043e\u0431\u0448\u0438\u0432\u043a\u0443 \u0438 \u0438\u0437\u043d\u0430\u043d\u043a\u0443 (\u043a\u043e\u043f\u0438\u044f \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u044e \u0432\u043d\u0443\u0442\u0440\u044c \u2014 \u043a\u0443\u0432\u044b\u0440\u043e\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043b\u043e\u0442\u044c \u0438\u043b\u0438 \u043a\u0430\u0440\u043a\u0430\u0441), \u0440\u0432\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u043e\u043c\u043a\u0430, \u043d\u0443\u0442\u0440\u043e \u043a\u0443\u0441\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043c\u0430\u0441\u043a\u0430\u0445 \u043a\u043e\u0440\u043f\u0443\u0441\u0430. \u041f\u0440\u043e\u0444\u0438\u043b\u0438 \u043e\u0440\u0443\u0436\u0438\u044f: \u043f\u0443\u0448\u043a\u0430 \u2014 \u0442\u0440\u0435\u0449\u0438\u043d\u0430 \u043f\u043b\u044e\u0441 \u043a\u0430\u0441\u043a\u0430\u0434 (\u043d\u0430\u0434\u0442\u0440\u0435\u0441\u043d\u0443\u0442\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u0440\u0432\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0435), \u043c\u0438\u043d\u043e\u043c\u0451\u0442 \u2014 \u0440\u0430\u0434\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442 \u044d\u043f\u0438\u0446\u0435\u043d\u0442\u0440\u0430, \u0440\u0435\u0439\u043b\u0433\u0430\u043d \u2014 \u0441\u043f\u0430\u043b\u043b \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0438 \u043a\u0443\u0441\u043e\u043a \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e \u043f\u043e\u043b\u0451\u0442\u0443.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/73\/3b\/40\/733b40e3d4c49a8bf20dff3b5af49627.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/73\/3b\/40\/733b40e3d4c49a8bf20dff3b5af49627.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/73\/3b\/40\/733b40e3d4c49a8bf20dff3b5af49627.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0427\u0435\u0440\u0435\u043f \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u043e\u0440\u0443\u0436\u0438\u044f: \u0441\u043b\u0435\u0432\u0430 \u0446\u0435\u043b\u044b\u0439, \u0441\u043f\u0440\u0430\u0432\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f. \u041f\u0443\u0448\u043a\u0430 \u0442\u0440\u0435\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u0441\u0442\u044c \u0438 \u0432\u044b\u0431\u0438\u0432\u0430\u0435\u0442 \u0447\u0438\u043f\u044b, \u043c\u0438\u043d\u043e\u043c\u0451\u0442 \u0432\u044b\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u043e\u0440\u043e\u043d\u043a\u0443 \u043a\u0443\u0441\u043a\u0430\u043c\u0438-\u043f\u043b\u0438\u0442\u0430\u043c\u0438, \u0440\u0435\u0439\u043b\u0433\u0430\u043d \u043f\u0440\u043e\u0431\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u043d\u0430\u043b \u043d\u0430\u0441\u043a\u0432\u043e\u0437\u044c. \u0414\u0432\u0430 \u043a\u0430\u0434\u0440\u0430 \u0441\u0442\u0435\u043d\u0434\u0430: \u043a\u0443\u0441\u043a\u0438 \u0435\u0449\u0451 \u0432 \u043f\u043e\u043b\u0451\u0442\u0435 \u0438 \u043e\u0441\u0442\u044b\u0432\u0448\u0438\u0435 \u0440\u0430\u043d\u044b.<\/em> <\/p>\n<p>\u0424\u043e\u0440\u043c\u0430 \u0441\u043f\u043b\u0430\u0442\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u043e\u0436\u0435 \u0441\u0442\u0430\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438: \u043a\u043b\u0430\u0441\u0441 \u043f\u043e \u043f\u0435\u0440\u0446\u0435\u043d\u0442\u0438\u043b\u044f\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 (\u043f\u043b\u0438\u0442\u0430 \u2265 p85 \u2014 5\u20137-\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a, \u0442\u043e\u0447\u043a\u0430 \u2264 p40 \u2014 \u043a\u0440\u0443\u0433, \u043c\u0435\u0436\u0434\u0443 \u2014 \u0441\u043a\u0440\u0443\u0433\u043b\u0451\u043d\u043d\u044b\u0439 \u0433\u0435\u043a\u0441), \u043c\u0430\u0441\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 alpha-to-coverage. \u0426\u0435\u043b\u044b\u0439 \u043a\u043e\u0440\u043f\u0443\u0441 \u0433\u043b\u0430\u0434\u043a\u0438\u0439; \u0440\u0432\u0430\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 <strong>\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<\/strong> \u2014 \u043a\u0440\u043e\u043c\u043a\u0430 \u0440\u0430\u043d\u044b \u0438 \u0434\u043d\u043e \u043a\u0440\u0430\u0442\u0435\u0440\u0430, \u2014 \u0430 \u043d\u0435 \u0448\u0443\u043c idle. \u042d\u0442\u043e \u0443\u0440\u043e\u043a \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u043f\u043b\u0435\u0439\u0442\u0435\u0441\u0442\u0430: \u00ab\u0441\u043f\u043b\u0430\u0442\u044b \u0433\u0443\u043b\u044f\u044e\u0442\u00bb \u2014 \u043b\u044e\u0431\u043e\u0435 \u043f\u0435\u0440-\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0435 \u0432 \u043f\u043e\u043a\u043e\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0448\u0443\u043c.<\/p>\n<h3>\u0427\u0442\u043e \u043d\u0435 \u0432\u0437\u043b\u0435\u0442\u0435\u043b\u043e<\/h3>\n<p>\u0421\u0430\u043c\u0430\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043f\u043e-\u043c\u043e\u0435\u043c\u0443.<\/p>\n<h4>SDF-\u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u044b<\/h4>\n<p>\u0412\u0435\u0442\u043a\u0430 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b\u0430 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d\u0430\u043c \u043f\u043e \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u043f\u0440\u0430\u0433\u043c\u0430\u0442\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u043d\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430:<\/p>\n<ol>\n<li>\n<p><strong>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u00d7100.<\/strong> \u041c\u043e\u0439 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 front-to-back \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c \u043d\u0430 \u043b\u0443\u0447, \u0431\u0435\u0437 \u0442\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0431\u0438\u043d\u043d\u0438\u043d\u0433\u0430; \u043d\u0430 400\u00b2 \u0443\u043f\u0438\u0440\u0430\u043b\u0441\u044f \u0432 VRAM (\u0441\u0435\u043c\u043f\u043b\u0438\u043b 50 \u0442\u044b\u0441. \u043b\u0443\u0447\u0435\u0439 \u043d\u0430 \u0448\u0430\u0433), 0.7 \u0441\/\u0448\u0430\u0433, 30+ \u043c\u0438\u043d\u0443\u0442 \u043d\u0430 \u0440\u0430\u043d. gsplat \u2014 \u0442\u0430\u0439\u043b\u043e\u0432\u044b\u0439 CUDA-\u043a\u0435\u0440\u043d\u0435\u043b, 6000 \u0448\u0430\u0433\u043e\u0432 \u0437\u0430 21 \u0441. \u0412\u0441\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0430\u0431\u043b\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 21-\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430 \u0431\u044e\u0434\u0436\u0435\u0442: \u043b\u043e\u0441\u0441 0.0137 \u043f\u0440\u043e\u0442\u0438\u0432 0.008.<\/strong> \u0423 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d \u0433\u043b\u0430\u0434\u043a\u0438\u0435, \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b. \u0423 \u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u0430 <code>\u03b1 = sigmoid(k(1\u2212F))<\/code> \u0441 \u043e\u0442\u0436\u0438\u0433\u043e\u043c k \u043e\u0442 8 \u0434\u043e 60 \u2014 \u043b\u0438\u0431\u043e \u043c\u044b\u043b\u043e \u043f\u0440\u0438 \u043c\u0430\u043b\u043e\u043c k, \u043b\u0438\u0431\u043e \u043c\u0451\u0440\u0442\u0432\u044b\u0435 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c (\u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0430 \u043d\u0430\u0441\u044b\u0449\u0430\u0435\u0442\u0441\u044f). \u0420\u0443\u0447\u043d\u0430\u044f \u0440\u0435\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b\u0430 MCMC-\u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u043d\u0442\u0430\u0439\u043c-\u0441\u0442\u0435\u043d\u0430: \u0433\u043b\u0443\u0431\u0438\u043d\u0430.<\/strong> \u0413\u0430\u0443\u0441\u0441\u0438\u0430\u043d\u0430 \u2014 \u043a\u0432\u0430\u0434 \u0432 MultiMesh. \u0421\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043b\u0438\u0431\u043e \u0440\u0435\u0439\u043c\u0430\u0440\u0448\u0430 \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 (<code>pow<\/code> \u043d\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u2014 \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u0437\u043e\u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 GPU), \u043b\u0438\u0431\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u0437\u043e-\u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0438\u0437 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0447\u0435\u0441\u0442\u043d\u043e\u0433\u043e z-\u0431\u0443\u0444\u0435\u0440\u0430. \u0422\u0430 \u0436\u0435 \u0441\u0442\u0435\u043d\u0430 \u0443\u0431\u0438\u043b\u0430 opaque-\u043f\u0430\u0441\u0441 \u0440\u0435\u0448\u0451\u0442\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0426\u0432\u0435\u0442\u043e\u0432\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f.<\/strong> 500\u20131000 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u043d\u0435 \u0442\u044f\u043d\u0443\u0442 \u0434\u0435\u043a\u0430\u043b\u0438 \u0438 \u043f\u0430\u043d\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u043e\u0441\u043f\u0438\u0441\u044c; 6 \u0442\u044b\u0441\u044f\u0447 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d \u043d\u0435\u0441\u0443\u0442 \u0434\u0435\u0442\u0430\u043b\u044c \u0432 \u0446\u0432\u0435\u0442\u0430\u0445.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u043e\u043a \u0434\u043e\u0435\u0445\u0430\u043b\u0430 \u0434\u043e \u043f\u0440\u043e\u0434\u0430 \u0432 \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435: \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u2192 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0441 \u043c\u0435\u0448\u0430; \u00ab\u043f\u0430\u043d\u0435\u043b\u044c = \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u00bb \u2192 part-ID; \u0442\u043e\u0447\u043d\u0430\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u2192 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0439\u043d\u0430\u044f \u0431\u0438\u043d\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f. \u0410 32-\u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0434\u0440\u043e\u043d \u0436\u0434\u0451\u0442 \u0433\u0438\u0431\u0440\u0438\u0434\u0430 \u00abSDF-\u043f\u0430\u043d\u0435\u043b\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 + \u0433\u0430\u0443\u0441\u0441\u043e\u0432\u0430 \u0448\u0443\u0431\u0430\u00bb \u2014 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u043b\u0438\u0437\u0430.<\/p>\n<h4>\u041e\u0431\u044a\u0451\u043c\u043d\u0430\u044f \u0440\u0435\u0448\u0451\u0442\u043a\u0430<\/h4>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0442\u043a\u0430: \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0448\u0451\u0442\u043a\u043e\u0439 (\u0432 \u0434\u0443\u0445\u0435 octree\/AMR). \u0426\u0432\u0435\u0442 \u0438 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u044f\u0447\u0435\u0435\u043a, \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043d\u0435\u044f\u0432\u043d\u0430\u044f (\u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c), \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0435\u0440\u0435\u0432\u0430 \u2014 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, LOD \u0432 \u043f\u043e\u0434\u0430\u0440\u043e\u043a. \u0421\u0432\u043e\u0439 CUDA-\u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440, \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430 \u0441 \u043f\u0440\u0443\u043d\u0438\u043d\u0433\u043e\u043c (\u0440\u0435\u0448\u0451\u0442\u043a\u0430 \u0434\u0440\u043e\u043d\u0430 \u0443\u0436\u0430\u043b\u0430\u0441\u044c \u0441 10 \u0442\u044b\u0441\u044f\u0447 \u044f\u0447\u0435\u0435\u043a \u0434\u043e 4), \u043f\u043e\u0440\u0442 \u0432 Godot.<\/p>\n<p>\u041f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0438 \u0431\u044b\u043b\u0430 \u0434\u0430\u0436\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0432\u0442\u0440\u043e\u0435 \u043d\u0438\u0436\u0435). \u0412\u0435\u0440\u0441\u0438\u044f \u0441 SDF \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0443\u0431\u0438\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043a \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0438\u0437 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430, \u0440\u0430\u0437\u0431\u0438\u043b\u0430\u0441\u044c \u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440: \u043b\u0443\u0447 \u043f\u0440\u043e\u0442\u044b\u043a\u0430\u0435\u0442 15\u201320 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u044f\u0447\u0435\u0435\u043a, \u0438 Compatibility \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u0441\u0442\u043e\u043f\u043a\u0443 \u2014 \u043c\u043e\u0437\u0430\u0438\u043a\u0430 \u0441 \u0434\u044b\u0440\u0430\u043c\u0438 \u0438 \u043c\u0443\u0430\u0440\u043e\u043c. \u0420\u0435\u0448\u0451\u0442\u043a\u0430 \u043f\u043e\u0434\u0430\u0440\u0438\u043b\u0430 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0431\u0430\u0433 \u0441 half-float \u0438 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u044b. \u0412\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0435 \u044f \u043a \u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0443\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u2014 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0439\u043d\u043e\u0439 \u0431\u0438\u043d\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<h4>\u0420\u044f\u0434\u043e\u0432\u044b\u0435 \u043c\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u043d\u0430 \u043c\u0435\u0448\u0438<\/h4>\n<p>\u0420\u043e\u0432\u043d\u043e \u043d\u0435\u0434\u0435\u043b\u044e \u0432\u0441\u0435 \u0432\u0440\u0430\u0433\u0438 \u0431\u044b\u043b\u0438 \u0441\u043f\u043b\u0430\u0442\u0430\u043c\u0438. \u041f\u043e\u0442\u043e\u043c \u0440\u044f\u0434\u043e\u0432\u044b\u0435 \u043c\u043e\u0431\u044b \u0443\u0448\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 GLB \u0441 toon-\u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c: \u043d\u0430 60\u201390 px \u0441\u043f\u043b\u0430\u0442-\u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0435 \u043e\u043a\u0443\u043f\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u0446\u0435\u043d\u0443, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0440\u0438\u0441\u043a \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 GPU \u2014 \u043d\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0421\u043f\u043b\u0430\u0442\u044b \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043c, \u0433\u0434\u0435 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u0438\u0434\u043d\u0430: \u0434\u0440\u043e\u043d \u0438\u0433\u0440\u043e\u043a\u0430, \u043f\u044f\u0442\u044c \u0431\u043e\u0441\u0441\u043e\u0432, \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u043a. Toon-\u0448\u0435\u0439\u0434\u0435\u0440 \u043c\u0435\u0448\u0435\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u0441\u043f\u043b\u0430\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0430 \u043d\u0435 \u0441\u043f\u043e\u0440\u0438\u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0434\u0440\u0435.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d2\/ad\/e8\/d2ade8a8bbc0190410dd1859763c80a3.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d2\/ad\/e8\/d2ade8a8bbc0190410dd1859763c80a3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d2\/ad\/e8\/d2ade8a8bbc0190410dd1859763c80a3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0414\u0432\u0430 \u0440\u044f\u0434\u043e\u0432\u044b\u0445 \u043c\u043e\u0431\u0430: \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 GLB \u0438 \u0435\u0433\u043e \u0441\u043f\u043b\u0430\u0442-\u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435. \u041d\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0435 \u043e\u043a\u0443\u043f\u0430\u0435\u0442 \u0446\u0435\u043d\u0443.<\/em> <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e \u0434\u043e\u0440\u043e\u0433\u0435 \u043e\u0442\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044b: \u0441\u043f\u043b\u0430\u0442-\u0442\u0435\u043d\u044c (\u0432\u0442\u043e\u0440\u043e\u0439 MultiMeshInstance \u043d\u0430\u0434 \u0442\u0435\u043c \u0436\u0435 \u0431\u0443\u0444\u0435\u0440\u043e\u043c, \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u043f\u043e\u043b \u0432\u0434\u043e\u043b\u044c \u0441\u0432\u0435\u0442\u0430 \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f 2D-\u0442\u0435\u043d\u044c \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0445\u0443\u0436\u0435), rim-\u0441\u0432\u0435\u0447\u0435\u043d\u0438\u0435 (\u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432), CoACD-\u0447\u0430\u043d\u043a\u0438 \u0441 \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u043c vertex color (\u043c\u0430\u0436\u0443\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443), \u043f\u0440\u0435-\u0440\u0435\u043d\u0434\u0435\u0440 \u0441\u043f\u0440\u0430\u0439\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u043e\u0431\u043e\u0432 (\u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 16\u201324 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u044f\u0434\u043e\u043c \u0441 \u0436\u0438\u0432\u044b\u043c\u0438 \u0441\u043f\u043b\u0430\u0442-\u0431\u043e\u0441\u0441\u0430\u043c\u0438 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u043e\u0440\u043e\u0434\u043d\u043e).<\/p>\n<h3>\u0411\u043e\u043d\u0443\u0441: \u0442\u0435 \u0436\u0435 \u0441\u043f\u043b\u0430\u0442\u044b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435<\/h3>\n<p>\u041f\u0440\u043e \u0441\u0430\u0439\u0442 <a href=\"https:\/\/aster-master.com\/\" rel=\"noopener nofollow\">aster-master.com<\/a> \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0417\u0430\u0434\u0430\u0447\u0430 \u0443 \u043d\u0435\u0433\u043e \u043e\u0434\u043d\u0430 \u2014 \u0432\u0438\u0448\u043b\u0438\u0441\u0442 \u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0434\u0435\u043c\u043e\u00bb, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u2014 \u0447\u0438\u0441\u0442\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u043a\u0430 \u0431\u0435\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 WebGL, \u0430 3D \u2014 \u043b\u0435\u043d\u0438\u0432\u044b\u0439 \u0447\u0430\u043d\u043a \u043f\u043e\u0432\u0435\u0440\u0445. \u041c\u0435\u0442\u0430\u0444\u043e\u0440\u0430 \u2014 \u0441\u043f\u0443\u0441\u043a \u0432 \u0448\u0430\u0445\u0442\u0443: \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0432\u043e\u043b, \u0441\u0435\u043a\u0446\u0438\u0438 \u2014 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u044b \u0441 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445 (\u0442\u0440\u0435\u0439\u043b\u0435\u0440 \u043d\u0430 35 \u043c, \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u043d\u0430 80 \u043c, \u0431\u0435\u0441\u0442\u0438\u0430\u0440\u0438\u0439 \u043d\u0430 125 \u043c, \u043b\u043e\u0433\u043e\u0432\u043e \u043d\u0430 \u0434\u043d\u0435), \u043a\u0430\u043c\u0435\u0440\u0430 \u0435\u0434\u0435\u0442 \u0437\u0430 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u043e\u043c \u0441 \u0434\u0435\u043c\u043f\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0430 HUD-\u0433\u043b\u0443\u0431\u0438\u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0433\u0434\u0435 \u0442\u044b. \u0421\u0442\u0435\u043a \u2014 Vite, \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 JS \u0438 three.js, \u0431\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432; \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0431\u0435\u0441\u0442\u0438\u0430\u0440\u0438\u044f (\u0438\u043c\u0435\u043d\u0430, \u0441\u0442\u0430\u0442\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445) \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435, \u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0430 \u0432 \u0438\u0433\u0440\u0435 \u0434\u043e\u0435\u0437\u0436\u0430\u0435\u0442 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u043e\u0439.<\/p>\n<p>\u0422\u0430\u043c \u0436\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0441\u043f\u043b\u0430\u0442\u044b \u2014 \u043b\u0443\u0447\u0448\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f: \u0438\u0433\u0440\u043e\u0432\u044b\u0435 GLB \u043d\u0435\u0441\u0443\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b 128\u00b2 \u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u043c \u043f\u043b\u0430\u043d\u043e\u043c \u043d\u0435 \u0436\u0438\u0432\u0443\u0442, \u0430 \u0441\u043f\u043b\u0430\u0442\u044b \u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445. \u0414\u0440\u043e\u043d \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u2014 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 16-\u0442\u044b\u0441\u044f\u0447\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u043d\u044f, \u043e\u0447\u0438\u0449\u0435\u043d\u043d\u043e\u0435 \u043e\u0442 \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u043e\u0432 \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0432 SPZ (229 \u041a\u0411; \u0443\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a \u0441\u0432\u043e\u0439, \u043d\u0430 Python, \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0430 \u0441\u0432\u0435\u0440\u0435\u043d\u0430 \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439). \u0420\u0435\u043d\u0434\u0435\u0440 \u2014 Spark \u043f\u043e\u0432\u0435\u0440\u0445 three.js, \u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u2014 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u00ab\u043e\u0434\u0438\u043d GLSL-\u0431\u043b\u043e\u043a \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d\u00bb: \u0441\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u0440\u043e\u044f \u0438\u0441\u043a\u0440 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445, \u0431\u0430\u0433\u0440\u043e\u0432\u044b\u0439 \u0441\u0432\u0435\u0442 \u043b\u043e\u0433\u043e\u0432\u0430, \u0432\u0438\u0437\u043e\u0440 \u0432 \u0442\u0430\u043a\u0442 \u0431\u0438\u0442\u0443. \u041c\u043e\u0431\u044b \u0431\u0435\u0441\u0442\u0438\u0430\u0440\u0438\u044f \u2014 \u043f\u043e ~39 \u041a\u0411 \u043a\u0430\u0436\u0434\u044b\u0439, \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0445 <code>splats.json<\/code>; \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043c\u044b\u0448\u044c\u044e \u043d\u0430 \u00ab\u0442\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435\u00bb, \u0430 \u0441\u043c\u0435\u043d\u0430 \u043c\u043e\u0431\u0430 \u2014 \u0440\u0430\u0441\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u0438\u0441\u043a\u0440. \u0411\u043e\u0441\u0441 \u043d\u0430 \u0434\u043d\u0435 \u0441\u0430\u0439\u0442\u0430 (Crimson Skull) \u2014 85 \u041a\u0411.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d8\/1a\/ef\/d81aef72fc509069ff3e3dd504eea72f.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d8\/1a\/ef\/d81aef72fc509069ff3e3dd504eea72f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d8\/1a\/ef\/d81aef72fc509069ff3e3dd504eea72f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0412\u0445\u043e\u0434 \u0432 \u0448\u0430\u0445\u0442\u0443 \u043d\u0430 aster-master.com: \u0434\u0440\u043e\u043d \u2014 16 \u0442\u044b\u0441\u044f\u0447 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d \u0447\u0435\u0440\u0435\u0437 Spark, \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u044b \u0438 \u043f\u043b\u0438\u0442\u044b \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043c\u0435\u0448\u0438 three.js.<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/1c\/1e\/0b\/1c1e0b72891cf4df2fa4c2f5353b355e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/1c\/1e\/0b\/1c1e0b72891cf4df2fa4c2f5353b355e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/1c\/1e\/0b\/1c1e0b72891cf4df2fa4c2f5353b355e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u00ab\u0422\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u00bb \u0431\u0435\u0441\u0442\u0438\u0430\u0440\u0438\u044f: \u0441\u043f\u043b\u0430\u0442 \u043c\u043e\u0431\u0430 \u043f\u0440\u0438\u043a\u043b\u0435\u0435\u043d \u043a DOM-\u0432\u0438\u0442\u0440\u0438\u043d\u0435 \u0438 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043c\u044b\u0448\u044c\u044e; \u0434\u043e\u0441\u044c\u0435 \u0438 \u0441\u0442\u0430\u0442\u044b \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0438\u0437 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441\u0430\u0439\u0442\u0430.<\/em> <\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0438\u0433\u0440\u044b \u0443 \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c \u2014 \u0433\u043e\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430-\u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0430: \u043d\u0435 \u0441\u043d\u0430\u043f\u0448\u043e\u0442-\u0441\u043f\u0440\u0430\u0439\u0442, \u0430 \u0436\u0438\u0432\u0430\u044f \u0441\u043f\u043b\u0430\u0442-\u043c\u043e\u0434\u0435\u043b\u044c, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434 \u0431\u044e\u0434\u0436\u0435\u0442 1800 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u043e \u043e\u0431\u043b\u0430\u043a\u043e (\u0440\u0435\u0442\u0440\u0435\u0439\u043d \u0441 <code>cap_max=1800<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0440\u0435\u0437\u0430 top-1800 \u0438\u0437 \u0448\u0435\u0441\u0442\u0438\u0442\u044b\u0441\u044f\u0447\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430 \u2014 MCMC \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0431\u044e\u0434\u0436\u0435\u0442 \u0441\u0430\u043c, \u0441\u0440\u0435\u0437 \u0434\u0430\u0451\u0442 \u0434\u044b\u0440\u044b).<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/7b\/87\/28\/7b87289b75e097b8f665dee896af48c7.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/7b\/87\/28\/7b87289b75e097b8f665dee896af48c7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/7b\/87\/28\/7b87289b75e097b8f665dee896af48c7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0413\u043e\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430 AFTERIMAGE \u0440\u044f\u0434\u043e\u043c \u0441 \u0434\u0440\u043e\u043d\u043e\u043c: \u0442\u0430 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 1625 \u0441\u043f\u043b\u0430\u0442\u0430\u0445, \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0451\u0442\u043e\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u043b\u0430\u0442\u043e\u0432.<\/em> <\/p>\n<h3>\u0418\u0442\u043e\u0433\u0438<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u043f\u043b\u0430\u0442\u043e\u0432 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">6000 (\u0431\u043e\u0441\u0441\u044b, \u0434\u0440\u043e\u043d), 1800 (\u0433\u043e\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430), 2800 (\u043f\u0440\u043e\u0431\u044b \u043c\u043e\u0431\u043e\u0432)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0439\u043d\u043e\u0433\u043e \u0448\u0442\u0440\u0430\u0444\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">~98%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">21\u201322 \u0441 (RTX 3060, 6000 \u0448\u0430\u0433\u043e\u0432, 400\u00b2)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u0430\u0442\u0430\u0441\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">120\u2013200 \u0432\u0438\u0434\u043e\u0432 1024\u00b2, Blender headless, ~30 \u0441 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0435\u0441 \u0432 \u0431\u0438\u043b\u0434\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">~0.5 \u041c\u0411 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0442\u0438\u0432 25\u201355 \u041c\u0411 GLB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">part \/ emis \/ ao \/ edge + \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0438 \u0447\u0430\u043d\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0434\u0440\u043e\u043d 72 px, \u0431\u043e\u0441\u0441\u044b ~112 px<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0440\u043e\u043a \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0434\u043e \u043f\u0440\u043e\u0434-\u0432\u0438\u0437\u0443\u0430\u043b\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">5 \u0434\u043d\u0435\u0439; \u0434\u043e \u00ab\u043a\u0443\u0441\u043a\u043e\u0432\u00bb \u2014 2 \u043c\u0435\u0441\u044f\u0446\u0430<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0427\u0442\u043e \u0431\u044b \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u043d\u0430\u0447\u0435 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430:<\/p>\n<ul>\n<li>\n<p><strong>\u0421\u0443\u0434\u0438\u0442\u044c \u0441\u0438\u043b\u0443\u044d\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0432\u0435\u0442\u043b\u043e\u043c \u0444\u043e\u043d\u0435<\/strong> \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435. \u041f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u0430\u043c \u0431\u044b\u043b\u0430 \u0431\u043e\u0440\u044c\u0431\u043e\u0439 \u0441 \u0442\u0435\u043c, \u0447\u0435\u0433\u043e \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442.<\/strong> \u0423\u0440\u043e\u043a 128\u00b2 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0441\u0442\u043e\u0438\u043b \u0440\u0435\u0442\u0440\u0435\u0439\u043d\u0430 \u0432\u0441\u0435\u0445 \u0431\u043e\u0441\u0441\u043e\u0432, \u0445\u043e\u0442\u044f \u0442\u0440\u0435\u043d\u0435\u0440 \u0431\u044b\u043b \u043d\u0438 \u043f\u0440\u0438 \u0447\u0451\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0440\u0430\u0437\u0443 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043a\u0443\u0441\u043a\u0430\u043c\u0438, \u0430 \u043d\u0435 \u0441\u043f\u043b\u0430\u0442\u0430\u043c\u0438.<\/strong> \u041f\u0435\u0440-\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 debris \u2014 \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u0434\u0435\u043c\u043a\u0430 \u0438 \u043a\u0430\u0448\u0430 \u0432 \u0431\u043e\u044e; \u0440\u0430\u0437\u043c\u0435\u0440 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u0443\u0441\u043a\u0430 (\u224820 px) \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u043b\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435 \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0432 \u0438\u0433\u0440\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/strong> \u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u043c\u0435\u0440\u0430 \u0434\u0430\u043b\u0430 64 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, \u043f\u043e\u044f\u0441 \u044d\u043b\u0435\u0432\u0430\u0446\u0438\u0438 \u2014 belly cull, toon-\u0441\u0442\u0438\u043b\u044c \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a. \u041a\u0430\u0436\u0434\u043e\u0435 \u00ab\u043c\u044b \u043d\u0435 \u0443\u043c\u0435\u0435\u043c\u00bb \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u043e\u0441\u044c \u0432 \u00ab\u043d\u0430\u043c \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e\u00bb.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e: <a href=\"https:\/\/store.steampowered.com\/app\/5095060\/\" rel=\"noopener nofollow\">\u0434\u0435\u043c\u043e AsterMaster \u0432 Steam<\/a> (19\u201326 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0438\u0433\u0440\u0430 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 Steam Next Fest, \u0440\u0435\u043b\u0438\u0437 \u2014 17 \u043d\u043e\u044f\u0431\u0440\u044f), \u0441\u0430\u0439\u0442 \u0441 \u0442\u0435\u043c\u0438 \u0441\u0430\u043c\u044b\u043c\u0438 \u0441\u043f\u043b\u0430\u0442\u0430\u043c\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u2014 <a href=\"https:\/\/aster-master.com\/\" rel=\"noopener nofollow\">aster-master.com<\/a>.<\/p>\n<p>\u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u2014 \u0447\u0435\u0441\u0442\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u0437\u0430\u0442\u0435\u044f \u0441\u0442\u0430\u043b\u0430 \u0441\u0430\u043c\u043e\u0439 \u043a\u0430\u0439\u0444\u043e\u0432\u043e\u0439 \u0437\u0430 \u0433\u043e\u0434. \u041d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441\u043f\u043b\u0430\u0442\u044b \u00ab\u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u00bb (\u0445\u043e\u0442\u044f \u0434\u0430). \u0410 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0435\u0434\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 \u0447\u0443\u0436\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043b\u0451\u0433 \u043d\u0430 \u0438\u0433\u0440\u043e\u0432\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0440\u043e\u0434\u043d\u043e\u0439: \u043a\u0430\u0436\u0434\u043e\u0435 \u00ab\u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u0435\u0442\u00bb \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u043e\u0441\u044c \u0432 \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0430 \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u2014 \u0432 \u043d\u043e\u0432\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0442\u043e\u0438\u043b \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430. \u0422\u0440\u0438 \u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0437\u0430\u0434 \u044f \u043d\u0435 \u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 gsplat; \u0441\u0435\u0439\u0447\u0430\u0441 \u0443 \u0431\u043e\u0441\u0441\u043e\u0432 \u0435\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u043a\u0440\u044b\u0442\u044c \u0440\u0435\u0439\u043b\u0433\u0430\u043d\u043e\u043c. \u0417\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043f\u0430\u0440\u0435 \u0441 \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u043e\u043c (Claude Code) \u2014 \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442 \u0438 \u043d\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u043e\u0439 \u0440\u0443\u043a \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0430 \u043b\u0435\u0442\u043e \u043d\u0435 \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044c; \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0432\u043a\u0443\u0441 \u0438 \u043f\u043b\u0435\u0439\u0442\u0435\u0441\u0442\u044b \u2014 \u043c\u043e\u0438, \u0437\u0430 \u0433\u0440\u0430\u0431\u043b\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e gsplat, \u043f\u0440\u043e Compatibility-\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440 Godot \u0438\u043b\u0438 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u043e \u0442\u043e\u0447\u0435\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043c\u044f\u0442\u044b\u043c \u043c\u0435\u0442\u0430\u043b\u043b\u043e\u043c \u2014 \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u0432\u0441\u0451.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/50\/65\/96\/506596ba32ada5a2af7f334184c56be9.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/50\/65\/96\/506596ba32ada5a2af7f334184c56be9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/50\/65\/96\/506596ba32ada5a2af7f334184c56be9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u0435: \u043c\u043e\u043b\u043d\u0438\u044f \u0431\u043e\u0441\u0441\u0430, \u0434\u0440\u043e\u043d \u043d\u0430 \u0441\u043e\u0442\u043d\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0432\u043e\u044f \u043b\u0443\u043a\u043e\u0432\u0438\u0446\u0430.<\/em> <\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1095208\/\">https:\/\/habr.com\/ru\/articles\/1095208\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0433\u043e\u0434 \u044f \u0434\u0435\u043b\u0430\u044e \u0440\u0438\u0442\u043c-\u0440\u043e\u0433\u0430\u043b\u0438\u043a \u043d\u0430 \u0433\u0435\u043a\u0441\u0430\u0445 AsterMaster (Godot 4.6). \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u0434\u0435\u043c\u043e \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432 Steam, \u0430 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0438\u0433\u0440\u044b \u0442\u0435 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:Steam: store.steampowered.com\/app\/5095060 \u2014 \u0434\u0435\u043c\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435, 19\u201326 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0438\u0433\u0440\u0430 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 Steam Next Fest, \u0440\u0435\u043b\u0438\u0437 17 \u043d\u043e\u044f\u0431\u0440\u044f.\u0421\u0430\u0439\u0442: aster-master.com \u2014 \u0442\u0440\u0435\u0439\u043b\u0435\u0440, \u0431\u0435\u0441\u0442\u0438\u0430\u0440\u0438\u0439 \u043d\u0430 \u0441\u043f\u043b\u0430\u0442\u0430\u0445, \u043f\u0440\u0435\u0441\u0441-\u043a\u0438\u0442.\u0412 \u0438\u0433\u0440\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u0435\u043d\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445: \u043a\u043e\u0440\u043f\u0443\u0441 \u0434\u0440\u043e\u043d\u0430 \u0438\u0433\u0440\u043e\u043a\u0430 \u0438 \u0431\u043e\u0441\u0441\u043e\u0432 \u2014 \u043d\u0435 \u043c\u0435\u0448. \u042d\u0442\u043e \u043e\u0431\u043b\u0430\u043a\u043e \u0438\u0437 ~6000 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0443\u0447\u0435\u043d\u043e \u043f\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0430\u043c \u0438\u0437 Blender, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u043f\u043e\u043b\u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430 \u0438 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0432 Godot \u043e\u0434\u043d\u0438\u043c MultiMesh. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043c\u044f\u0442\u044c, \u0434\u044b\u0440\u044f\u0432\u0438\u0442\u044c, \u0440\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0443\u0441\u043a\u0438 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u2014 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435, \u0431\u0435\u0437 \u0443\u0447\u0430\u0441\u0442\u0438\u044f CPU.\u0421\u043f\u043b\u0430\u0442-\u043a\u043e\u0440\u043f\u0443\u0441 \u0434\u0440\u043e\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0439: \u043a\u0440\u0430\u0442\u0435\u0440\u044b, \u0432\u043c\u044f\u0442\u043e\u0435 \u043d\u0443\u0442\u0440\u043e, \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043e\u0441\u043a\u043e\u043b\u043a\u0438. \u0421\u0442\u0435\u043d\u0434\u043e\u0432\u044b\u0439 \u043a\u0430\u0434\u0440, \u0432 \u0438\u0433\u0440\u0435 \u0432\u0441\u0451 \u044d\u0442\u043e \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 72 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0443: \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043f\u043b\u0430\u0442\u044b \u0432 \u0438\u0433\u0440\u0435, \u0433\u0434\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u0442\u043d\u044e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439; \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u00abBlender \u2192 gsplat \u2192 \u0441\u0432\u043e\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u2192 Godot Compatibility\u00bb; \u0447\u0442\u043e \u0432 \u043d\u0451\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443 (\u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b, \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0439\u043d\u0430\u044f \u0431\u0438\u043d\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u0447\u0438\u0441\u0442\u043a\u0430 \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u043e\u0432, \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 64 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438); \u043a\u0430\u043a \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f; \u0438 \u0447\u0442\u043e \u043d\u0435 \u0432\u0437\u043b\u0435\u0442\u0435\u043b\u043e \u2014 \u0441 \u0446\u0438\u0444\u0440\u0430\u043c\u0438. \u041f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0434\u0435\u043b\u0430\u043b\u0441\u044f \u043f\u043e\u0434 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b (Compatibility-\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440, half-float, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435), \u0430 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0436\u0438\u0432\u0451\u0442 \u0432 Steam \u0438 \u043d\u0430 Deck \u2014 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438.\u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430 \u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435: \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u0442\u044c\u044f \u00ab\u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439 3DGS-\u0441\u043a\u0430\u043d\u0435\u0440\u00bb. \u042d\u0442\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437, \u043a\u0430\u043a \u0432\u0437\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e.\u0417\u0430\u0447\u0435\u043c \u0441\u043f\u043b\u0430\u0442\u044b \u0432 \u0438\u0433\u0440\u0435, \u0433\u0434\u0435 \u0432\u0441\u0451 100 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439\u0420\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u044f \u043d\u0435 \u0443\u043c\u0435\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u0440\u0430\u0433\u043e\u0432 \u0438 \u0434\u0440\u043e\u043d\u0430 \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 (Meshy). \u0412\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e, \u043d\u043e \u043f\u043e 25\u201355 \u041c\u0411 \u0445\u0430\u0439\u043f\u043e\u043b\u0438 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u0441 \u0441\u043e\u0442\u043d\u044f\u043c\u0438 \u043d\u0435\u0437\u0430\u043c\u043a\u043d\u0443\u0442\u044b\u0445 \u00ab\u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043e\u043a\u00bb \u0432\u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0441\u0442\u043d\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438. \u0412 \u0431\u0438\u043b\u0434 \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u043a\u043b\u0430\u0434\u0451\u0448\u044c, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043c\u0435\u0448 \u0441\u043a\u0443\u0447\u043d\u043e \u0443\u043c\u0438\u0440\u0430\u0435\u0442: \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e, \u0440\u0430\u0441\u0442\u0432\u043e\u0440\u0438\u043b\u0441\u044f, \u0438\u0441\u0447\u0435\u0437. \u041c\u043d\u0435 \u0436\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u0439 \u0447\u0438\u0442\u0430\u043b\u0441\u044f \u043f\u043e \u043a\u043e\u0440\u043f\u0443\u0441\u0443: \u043c\u044f\u0442\u044b\u0439 \u0431\u043e\u0440\u0442 \u2014 \u044d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043f\u043e\u043b\u043e\u0441\u043a\u0430 HP \u2014 \u044d\u0442\u043e \u043e\u0442\u0447\u0451\u0442.Gaussian Splatting (3DGS) \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u044b \u043e\u0431\u043b\u0430\u043a\u043e\u043c \u0430\u043d\u0438\u0437\u043e\u0442\u0440\u043e\u043f\u043d\u044b\u0445 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d: \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u044f, \u043a\u043e\u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f (\u043c\u0430\u0441\u0448\u0442\u0430\u0431 + \u043f\u043e\u0432\u043e\u0440\u043e\u0442), \u0446\u0432\u0435\u0442 \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c. \u041e\u0431\u043b\u0430\u043a\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0442 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u0437\u0430\u043c\u0438 \u043a\u0430\u043c\u0435\u0440, \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u043a\u0430\u043d\u043e\u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u042f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u044d\u0442\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u043b\u0430\u0442 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439, \u0446\u0432\u0435\u0442\u043e\u043c \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c. \u042d\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0447\u0430\u0441\u0442\u0438\u0446 \u0432 \u0444\u043e\u0440\u043c\u0435 \u043c\u043e\u0434\u0435\u043b\u0438. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c, \u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438, \u0432\u044b\u0431\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u2014 \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u0443\u0436\u0435 \u0443\u043c\u0435\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440.\u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 3DGS-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d:\u0421\u0442\u0438\u043b\u044c \u2014 toon, \u0430 \u043d\u0435 \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b. \u0417\u043d\u0430\u0447\u0438\u0442, \u0443\u0447\u0438\u043c\u0441\u044f \u043d\u0435 \u043f\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f\u043c, \u0430 \u043f\u043e \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0430\u043c \u0441 \u0442\u043e\u0447\u043d\u044b\u043c\u0438 \u043f\u043e\u0437\u0430\u043c\u0438. COLMAP \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.\u0411\u044e\u0434\u0436\u0435\u0442 \u2014 \u0436\u0451\u0441\u0442\u043a\u0438\u0439. \u041d\u0435 \u00ab\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f\u00bb, \u0430 \u0440\u043e\u0432\u043d\u043e N \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c: 6000 \u043d\u0430 \u0431\u043e\u0441\u0441\u0430, \u043f\u0430\u0440\u0430 \u0442\u044b\u0441\u044f\u0447 \u043d\u0430 \u043c\u0435\u043b\u043e\u0447\u044c.\u0420\u0430\u043d\u0442\u0430\u0439\u043c \u2014 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 GPU. Compatibility-\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440 Godot, \u043f\u0435\u0440-\u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 half-float, \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u2014 \u0432\u0440\u0430\u0433. \u041d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0441\u043f\u043b\u0430\u0442\u044b \u0431\u044b\u043b\u0438 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c\u0438 \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438.\u041d\u0443\u0436\u043d\u044b \u043b\u0438\u0448\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u044b. \u041d\u043e\u0440\u043c\u0430\u043b\u0438 (\u0434\u043b\u044f cel-\u0441\u0432\u0435\u0442\u0430 \u0438 \u0432\u0441\u043f\u044b\u0448\u0435\u043a), \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u043a \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u00ab\u0433\u043b\u0443\u0431\u0438\u043d\u0430\u00bb \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u2014 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0443 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u043d\u0435\u0442.\u0414\u0435\u043d\u044c \u043f\u0435\u0440\u0432\u044b\u0439: \u043f\u044f\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u0437\u0430 \u0441\u0443\u0442\u043a\u0438\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0432 \u043e\u0434\u0438\u043d \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0434\u0435\u043d\u044c, \u0438 \u0430\u0440\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f.\u0422\u0440\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0440\u043e\u043d\u0430: splatfacto \u043d\u0430 toon-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445 (16 \u0442\u044b\u0441. \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d), \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u043e\u0432 (500 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432), gsplat \u0441 MCMC-\u0431\u044e\u0434\u0436\u0435\u0442\u043e\u043c (6000). splatfacto (nerfstudio) \u043d\u0430 PBR-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445 \u2014 41 \u0442\u044b\u0441\u044f\u0447\u0430 \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d, \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b. \u041a\u0440\u0430\u0441\u0438\u0432\u043e, \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e: \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0432\u044b\u0433\u043e\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 \u043c\u0435\u0448\u0430, \u0430 \u0432 \u0438\u0433\u0440\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u0435\u043d toon.splatfacto \u043d\u0430 cel-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445 \u2014 16 \u0442\u044b\u0441\u044f\u0447. \u0423\u0436\u0435 \u0441\u0442\u0438\u043b\u044c, \u043d\u043e \u0431\u044e\u0434\u0436\u0435\u0442 \u043d\u0435 \u0442\u0430\u0440\u0433\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f: \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430 adaptive density control \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0433\u0434\u0435 \u0435\u0439 \u0443\u0434\u043e\u0431\u043d\u043e. \u0414\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u043a, \u0434\u043b\u044f \u0431\u043e\u0441\u0441\u0430 \u0441 \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u0442\u043e\u043b\u043f\u043e\u0439 \u2014 \u043d\u0435\u0442.\u0421\u0432\u043e\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u043e\u0432. \u0418\u0434\u0435\u044f: \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u0441 \u0447\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0435\u0437\u043a\u043e\u0439 \u0433\u0440\u0430\u043d\u044c\u044e F = (\u03a3|q|^p)^(1\/p), \u043c\u043e\u0440\u0444\u044f\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u043e\u043a\u0442\u0430\u044d\u0434\u0440\u0430 \u0434\u043e \u0441\u043a\u0440\u0443\u0433\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0431\u043e\u043a\u0441\u0430, \u0441 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044f\u043c\u0438 \u0438 \u00ab\u043f\u0430\u043d\u0435\u043b\u044c\u043d\u043e\u0439\u00bb \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043e\u0447\u0430\u0440\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0440\u043e\u043d \u0438\u0437 500 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0432\u0435\u0441\u043e\u043c 32 \u041a\u0411, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u2014 \u043d\u043e \u00ab\u043a\u0438\u0441\u0442\u044c\u044e\u00bb, \u0431\u0435\u0437 \u0434\u0435\u0442\u0430\u043b\u0435\u0439. \u042d\u0442\u0430 \u0432\u0435\u0442\u043a\u0430 \u0438 \u0434\u0430\u043b\u0430 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (sdf_splat), \u0438 \u043e \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0441\u0442-\u043c\u043e\u0440\u0442\u0435\u043c \u043d\u0438\u0436\u0435.\u0421\u0443\u0440\u0444\u0435\u043b\u0438 \u0441 \u043c\u0435\u0448\u0430 \u2014 \u0441\u0435\u043c\u043f\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, \u043a\u043b\u0430\u0434\u0451\u043c \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0432 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0446\u0432\u0435\u0442 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041e\u0442\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u043e \u0437\u0430 \u0447\u0430\u0441: hard-edge \u043c\u043e\u0437\u0430\u0438\u043a\u0430 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0433\u0440\u044f\u0437\u044c, \u0441\u0443\u0440\u0444\u0435\u043b\u0438 \u043d\u0435 \u0431\u043b\u0435\u043d\u0434\u044f\u0442\u0441\u044f.\u041f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u2014 \u043c\u0438\u043d\u0438-\u0442\u0440\u0435\u0439\u043d\u0435\u0440 \u043f\u043e\u0432\u0435\u0440\u0445 gsplat \u0441 MCMCStrategy(cap_max=N): \u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u0431\u044e\u0434\u0436\u0435\u0442, 6000 \u0441\u043f\u043b\u0430\u0442\u043e\u0432, 21 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 RTX 3060, \u043b\u043e\u0441\u0441 \u0432\u0434\u0432\u043e\u0435 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0443 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0442\u043e\u0440\u0430.SDF-\u0432\u0435\u0442\u043a\u0430 \u043e\u0442 v1 \u0434\u043e v3: 500 \u0441\u0443\u043f\u0435\u0440\u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u043e\u0432 \u00ab\u043a\u0438\u0441\u0442\u044c\u044e\u00bb, \u0438\u0437\u043e-\u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c \u00ab\u0441\u0442\u0438\u043a\u0435\u0440\u0430\u043c\u0438\u00bb-\u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043a\u0430\u043c\u0438. \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e \u0434\u043d\u044f \u0434\u043e\u0436\u0438\u043b\u0438 \u0434\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439:\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 Blender-\u0440\u0435\u043d\u0434\u0435\u0440\u0430\u0445 \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u0437\u0430\u043c\u0438; \u0441\u0442\u0438\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (cel-\u0448\u0435\u0439\u0434\u0435\u0440 \u0432 Blender), \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a \u043d\u0435\u0442 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u044f\u043c\u043e\u0439 RGB;\u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043d\u0435 \u0443\u0447\u0430\u0442\u0441\u044f, \u0430 \u0441\u043d\u0430\u043f\u0430\u044e\u0442\u0441\u044f \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0448\u0430 \u043f\u043e\u0441\u043b\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u2014 \u043e\u0442\u0441\u044e\u0434\u0430 \u0432 \u0438\u0433\u0440\u0435 \u0435\u0441\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 cel-\u0440\u0435\u043b\u0430\u0439\u0442 \u0438 \u0432\u0441\u043f\u044b\u0448\u043a\u0438 \u043e\u0442 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u043e\u0432;\u043a\u043e\u043d\u0442\u0443\u0440 \u043d\u0435 \u0443\u0447\u0438\u0442\u0441\u044f \u2014 \u043e\u043d screen-space \u043f\u043e\u0432\u0435\u0440\u0445;\u0440\u0435\u043d\u0434\u0435\u0440 \u0432 Godot: \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 + \u0442\u043e\u043d\u043a\u0430\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430\u044f \u00ab\u0448\u0443\u0431\u0430\u00bb \u0441 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0430\u043c\u0438.\u0414\u0430\u0442\u0430\u0441\u0435\u0442: Blender headless \u0432\u043c\u0435\u0441\u0442\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439\u0414\u0430\u0442\u0430\u0441\u0435\u0442 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f headless Blender: \u0438\u043c\u043f\u043e\u0440\u0442 GLB, \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043a\u0443\u0431 1.6, \u043a\u0430\u043c\u0435\u0440\u0430 \u043d\u0430 \u043e\u0440\u0431\u0438\u0442\u0435 \u0440\u0430\u0434\u0438\u0443\u0441\u0430 3.2, 1024\u00b2 \u0441 \u0430\u043b\u044c\u0444\u043e\u0439, \u0444\u043e\u0440\u043c\u0430\u0442 transforms_*.json \u043a\u0430\u043a \u0443 NeRF-\u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0438.\u041a\u0430\u0434\u0440\u044b \u0434\u0432\u0443\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u043d\u044f: PBR-\u0440\u0435\u043d\u0434\u0435\u0440 \u0438 cel-\u0440\u0435\u043d\u0434\u0435\u0440 \u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u0440\u043e\u043d\u0430. \u0421\u043f\u043b\u0430\u0442 \u0443\u0447\u0438\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0438\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0432\u0435\u0442 \u0438 \u0441\u0442\u0438\u043b\u044c. R = 3.2def pose(split, i, n):    golden = math.pi * (3 &#8212; math.sqrt(5))    if split == &#8216;train&#8217;:        t = (i + 0.5) \/ n        smin, smax = math.sin(math.radians(BELT_MIN)), math.sin(math.radians(50))        elev = math.asin(smin + (smax &#8212; smin) * t)   # \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u043e sin \u2014 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u043e \u043f\u043b\u043e\u0449\u0430\u0434\u0438        az = i * golden                               # \u0437\u043e\u043b\u043e\u0442\u0430\u044f \u0441\u043f\u0438\u0440\u0430\u043b\u044c \u043f\u043e \u0430\u0437\u0438\u043c\u0443\u0442\u0443    &#8230;    return Vector((R * cos(az) * cos(elev), R * sin(az) * cos(elev), R * sin(elev)))\u0414\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043e\u0442 \u00ab\u043e\u0431\u043e\u0439\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e \u043a\u0440\u0443\u0433\u0443\u00bb:\u041f\u043e\u044f\u0441 \u044d\u043b\u0435\u0432\u0430\u0446\u0438\u0438. \u0418\u0433\u0440\u043e\u0432\u0430\u044f \u043a\u0430\u043c\u0435\u0440\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043f\u043e\u0434 32\u201350\u00b0 \u0441\u0432\u0435\u0440\u0445\u0443, \u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043f\u043e yaw. \u0417\u043d\u0430\u0447\u0438\u0442, \u0434\u043d\u0438\u0449\u0435 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u0430 \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 32\u00b0 \u0438 50\u00b0, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u0440\u044b\u0442\u043e \u043f\u043b\u043e\u0442\u043d\u043e. Train-\u0432\u0438\u0434\u044b \u043b\u0435\u0436\u0430\u0442 \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u0441\u043f\u0438\u0440\u0430\u043b\u044c\u044e \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u044f\u0441\u0435, val\/test \u2014 \u043d\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u0432\u0430\u0446\u0438\u044f\u0445. \u041f\u043e\u0437\u0436\u0435 \u043f\u043e\u044f\u0441 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0432\u043d\u0438\u0437 \u0434\u043e 14\u00b0 \u2014 \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u043e \u0444\u043b\u043e\u0430\u0442\u0435\u0440\u044b.\u0421\u0432\u0435\u0442. \u0421\u043f\u043b\u0430\u0442 \u0443\u0447\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0438\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0432\u0435\u0442. \u042f \u043f\u0440\u043e\u0433\u043d\u0430\u043b \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0440\u043e\u043d\u0430: cel (toon-\u0448\u0435\u0439\u0434\u0435\u0440 \u043f\u0440\u044f\u043c\u043e \u0432 Blender), flat (\u0447\u0438\u0441\u0442\u043e\u0435 \u0430\u043b\u044c\u0431\u0435\u0434\u043e \u0431\u0435\u0437 \u0441\u0432\u0435\u0442\u0430) \u0438 ao (\u0434\u0438\u0444\u0444\u0443\u0437 \u043f\u043e\u0434 \u0431\u0435\u043b\u044b\u043c \u043a\u0443\u043f\u043e\u043b\u043e\u043c \u0431\u0435\u0437 \u0441\u043e\u043b\u043d\u0446\u0430).\u0422\u0440\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0440\u043e\u043d\u0430 \u0438 \u0447\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u0443\u0447\u0438\u043b\u043e\u0441\u044c (\u043e\u0434\u0438\u043d \u0440\u0430\u043a\u0443\u0440\u0441, \u043e\u0434\u0438\u043d \u0431\u044e\u0434\u0436\u0435\u0442 6000). cel: toon-\u0448\u0435\u0439\u0434\u0435\u0440 \u0443\u0436\u0435 \u0432 Blender, \u043f\u043e\u043b\u043e\u0441\u044b \u0441\u0432\u0435\u0442\u0430 \u0437\u0430\u043f\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0432 \u0446\u0432\u0435\u0442 \u0441\u043f\u043b\u0430\u0442\u043e\u0432. flat: \u0430\u043b\u044c\u0431\u0435\u0434\u043e \u0431\u0435\u0437 \u0441\u0432\u0435\u0442\u0430, \u043e\u0431\u044a\u0451\u043c \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f. ao: \u043c\u044f\u0433\u043a\u043e\u0435 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u0443\u043f\u043e\u043b\u0430, \u043e\u0431\u044a\u0451\u043c \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0441 \u043d\u0435\u0442. \u0422\u043e \u0436\u0435 \u0432 \u0438\u0433\u0440\u0435, \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c-cel-\u0448\u0435\u0439\u0434\u0435\u0440\u0430: cel-\u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0434\u0430\u0451\u0442 \u0434\u0432\u043e\u0439\u043d\u044b\u0435 \u043f\u043e\u043b\u043e\u0441\u044b, flat \u2014 \u043f\u043b\u043e\u0441\u043a\u0438\u0439 \u0431\u043b\u0438\u043d, ao \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0431\u044a\u0451\u043c \u0438 \u043d\u0435 \u0441\u043f\u043e\u0440\u0438\u0442 \u0441 \u0440\u0430\u043d\u0442\u0430\u0439\u043c-\u0441\u0432\u0435\u0442\u043e\u043c. \u041f\u043e\u0431\u0435\u0434\u0438\u043b ao: \u0437\u0430\u043f\u0435\u0447\u0451\u043d\u043d\u043e\u0435 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u0443\u043f\u043e\u043b\u0430 \u0434\u0430\u0451\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u0443, \u043d\u043e \u0431\u0435\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0432\u043e\u0438\u043b\u0438\u0441\u044c \u0431\u044b \u0441 cel-\u0431\u044d\u043d\u0434\u0430\u043c\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u042d\u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0446\u0435\u043f\u0442 \u043f\u043e\u0442\u043e\u043c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u0430\u0441\u043a\u0430\u0442\u0430\u043b\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u043e\u0431\u043e\u0432 \u0438 \u0431\u043e\u0441\u0441\u043e\u0432: \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 diffuse(texture \u00d7 HSV).\u0413\u0440\u0430\u0431\u043b\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u043b\u0438 \u043f\u043e \u0432\u0435\u0447\u0435\u0440\u0443 \u043a\u0430\u0436\u0434\u044b\u0435:\u0423 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 TEX_IMAGE-\u043d\u043e\u0434\u043e\u0439 \u0432 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0442\u0451\u043c\u043d\u0430\u044f ORM-\u043a\u0430\u0440\u0442\u0430 \u2014 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0432\u044b\u0448\u0435\u043b \u0447\u0451\u0440\u043d\u044b\u043c. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c: \u043e\u0442 Principled BSDF \u0438\u0434\u0442\u0438 \u043f\u043e \u0432\u0445\u043e\u0434\u0443 Base Color \u0432\u0433\u043b\u0443\u0431\u044c \u0434\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0441 \u0444\u043e\u043b\u0431\u044d\u043a\u043e\u043c \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e sRGB-\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443.\u00ab\u0411\u043e\u0441\u0441\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u0435\u0442\u0430\u043b\u0435\u0439\u00bb. \u042f \u0433\u0440\u0435\u0448\u0438\u043b \u043d\u0430 \u0431\u044e\u0434\u0436\u0435\u0442 \u0441\u043f\u043b\u0430\u0442\u043e\u0432 \u0438 \u043d\u0430 \u0442\u0440\u0435\u043d\u0435\u0440. \u041a\u043e\u0440\u0435\u043d\u044c \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043b\u0438\u0441\u044c \u0441 GLB \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438\u0433\u0440\u044b, \u0433\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0434\u0430\u0432\u043d\u043e \u0443\u0436\u0430\u0442\u044b \u0434\u043e 128\u00b2 \u0441\u0442\u0430\u0440\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u041f\u043e\u043b\u043d\u044b\u0435 \u0441\u043e\u0440\u0441\u044b 2048\u00b2 \u043b\u0435\u0436\u0430\u043b\u0438 \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0435. \u041c\u044b\u043b\u043e \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u2014 \u043c\u044b\u043b\u043e \u0432 \u0431\u0438\u043d\u0430\u0445.\u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u043e\u0441\u0441: \u0441\u043b\u0435\u0432\u0430 \u2014 \u0441\u0442\u0430\u0440\u044b\u0439 \u0440\u0430\u043d (\u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0441 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 128\u00b2, 4500 \u0441\u043f\u043b\u0430\u0442\u043e\u0432), \u0441\u043f\u0440\u0430\u0432\u0430 \u2014 \u0440\u0435\u0442\u0440\u0435\u0439\u043d \u0441 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043e\u0440\u0441\u0430 (2048\u00b2, 6000). \u0421\u043d\u0438\u0437\u0443 \u0446\u0435\u043d\u0442\u0440 \u043b\u0438\u0446\u0430 \u043a\u0440\u0443\u043f\u043d\u0435\u0435. \u0411\u044e\u0434\u0436\u0435\u0442 \u0442\u043e\u0436\u0435 \u0432\u044b\u0440\u043e\u0441, \u043d\u043e \u0434\u0435\u0442\u0430\u043b\u044c \u0434\u0430\u043b \u043d\u0435 \u043e\u043d: \u043d\u0430 128\u00b2 \u0442\u0440\u0435\u043d\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u043f\u0430\u043d\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0438 \u0437\u0443\u0431\u043e\u0432. \u0422\u0440\u0435\u043d\u0435\u0440: 150 \u0441\u0442\u0440\u043e\u043a \u043f\u043e\u0432\u0435\u0440\u0445 gsplat\u0412\u0435\u0441\u044c \u0442\u0440\u0435\u043d\u0435\u0440 \u2014 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043a \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c 3DGS, \u043d\u043e \u0446\u0432\u0435\u0442 \u2014 \u043f\u0440\u044f\u043c\u043e\u0439 RGB \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0443, \u0431\u0435\u0437 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u0441\u0435\u043c\u043f\u043b\u044b \u0441 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0448\u0430 \u0441 \u0446\u0432\u0435\u0442\u043e\u043c \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0443 trimesh \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430).params = torch.nn.ParameterDict({    &#8216;means&#8217;:     torch.nn.Parameter(pos),    &#8216;quats&#8217;:     torch.nn.Parameter(q + torch.randn_like(q) * 0.01),    &#8216;scales&#8217;:    torch.nn.Parameter(torch.full((N, 3), math.log(0.03))),    &#8216;opacities&#8217;: torch.nn.Parameter(torch.zeros(N)),    &#8216;colors&#8217;:    torch.nn.Parameter(torch.logit(col.clamp(0.02, 0.98))),})strategy = MCMCStrategy(cap_max=N, refine_start_iter=500,                        refine_stop_iter=steps &#8212; 1000, refine_every=100)for step in range(steps):    vi = np.random.randint(n_views)    # \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u044b\u0439 \u0444\u043e\u043d \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u2014 \u0430\u043d\u0442\u0438-\u0444\u043b\u043e\u0430\u0442\u0435\u0440    bg_val = float(np.random.random())    rgb, alpha, info = rasterization(means, quats, scales.exp(), sigmoid(opacities),                                     sigmoid(colors), viewmats[vi][None], K[None],                                     width=res, height=res,                                     backgrounds=torch.full((1, 3), bg_val))    gt = imgs[vi] + (1.0 &#8212; alphas_gt[vi])[&#8230;, None] * bg_val    loss = (rgb &#8212; gt).abs().mean() + 0.3 * (alpha &#8212; alphas_gt[vi]).abs().mean()    if entropy &gt; 0:   # \u043f\u043e\u0437\u0434\u043d\u0438\u0439 annealing: \u0444\u043e\u0440\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u0441\u0442\u0430\u043a\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u0431\u0438\u043d\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438        ent_w = entropy * max(0.0, (step \/ steps &#8212; 0.6) \/ 0.4)        o = torch.sigmoid(params[&#8216;opacities&#8217;])        loss = loss + ent_w * (o * (1 &#8212; o)).mean()    loss.backward()    strategy.step_post_backward(params, optimizers, state, step, info, lr=lr_means)    for opt in optimizers.values():        opt.step()\u0425\u043e\u0434 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0431\u043e\u0441\u0441\u0430: \u0448\u0430\u0433 0 \u2014 \u0441\u0435\u043c\u043f\u043b\u044b \u0441 \u043c\u0435\u0448\u0430, \u0448\u0430\u0433 500 \u2014 \u0441\u0438\u043b\u0443\u044d\u0442 \u0441\u0445\u0432\u0430\u0447\u0435\u043d, \u0448\u0430\u0433 6000 \u2014 \u0444\u0438\u043d\u0430\u043b. &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-498924","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/498924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=498924"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/498924\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=498924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=498924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=498924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}