от Эми
Иногда, когда вы import модель в 3DCoat, normal map в средстве рендеринга видового экрана отображается неправильно. Но все начинается так же, как вы экспортируете свою модель в любое другое программное обеспечение.
Карта нормалей может немного исправить проблемы с затенением, связанными с тем, как карты нормалей считываются программным обеспечением, и это может сделать проблему менее заметной, но проблема все еще существует. Вы должны применить некоторые правила, которые помогут решить реальную проблему, чтобы облегчить работу и жизнь, запекая более качественные карты нормалей.
Без применения этих правил обычно большинство нормальных людей были средними, и лишь немногие — тяжелыми, что было странно видеть. Но это, очевидно, основная причина проблем: как экспортируются группы сглаживания для вашей модели и как они читаются в другом программном обеспечении.
Во-первых, у коробок не могут быть мягкие или средние края, они имеют углы в 90°, и что бы вы ни делали, у них всегда будут проблемы с освещением, если для них не установлены жесткие края. Раньше, до того, как появились более продвинутые программы запекания, такие как Marmoset, которые упрощали задачу, вам всегда приходилось создавать клетку, и клетка была той, которая имела средние нормали вершин, поэтому клетка использовалась для вычисления среднего значения. поиск» высокополигональной модели, не вызывая ошибок при запекании, поскольку коробка будет напоминать жесткие края. Конечно, теперь у Marmoset есть флажок «гладкая клетка», делающий то же самое, и теперь вам не нужна клетка, если она вам действительно не нужна.
Итак, здесь есть два «правила», и они также связаны между собой:
1. когда вы делаете модели с углами 90°, они всегда должны быть жесткими. Конечно, вы также можете сделать небольшой скос и избежать углов под углом 90°. это не только будет точно повторять форму модели в высоком разрешении, но также вы сможете использовать мягкие края на коробке и сделать ее более красивой, с меньшими проблемами, округлой, красивой и все такое.
2. Жесткие края (которые в основном должны составлять углы 90°) всегда должны быть разделены на UV , чтобы избежать проблем. Вы можете не заметить этого на своей модели, но они есть, и это связано с тем, как пиксели встречаются под углом 90 °, и как пиксели могут смешиваться, и они просто разные, поэтому не хватает места, как отступы, чтобы исправить небольшие проблемы, которые могут возникнуть. Да, это зависит от разрешения, UVs и всего такого, и это может сделать его более заметным, чем другие, но да, в таком случае, когда вы создаете прямоугольники, вам придется разделить все эти края по 90 °, и да, это означает, что 6 сторон коробки = 6 островов, чтобы избежать проблем.
Говорим о 3DCoat , о том, как он работает с пресетами и все такое. Что я понимаю, так это то, что, используя такие пресеты, как Blender или Unity, вы на самом деле используете предопределенный файл, в котором указано не только то, как он будет обрабатывать карту нормалей, но и будет ли он перевернут зеленым или нет. А также касательное пространство, триангуляция, экспорт нормалей и некоторые другие параметры. Если вы используете опцию «Неизвестно», вы сможете использовать те настройки, которые вы установили.
Если вы перейдете в C:Program Files 3DCoat-VXXXToolsPresetsExtTools, вы увидите XML-файлы и то, чем Unity отличается от Blender, поскольку в предустановке Blender используется MikkTSpace, а для unity установлено значение LengyelAreaAngleWeightedSpace. Это единственная разница. но, видимо, достаточно, чтобы вы это увидели, потому что они интерпретируются по-разному. Технически они ни на что не должны влиять, а только на способ чтения normal map , если это «DirectX» или «OpenGL», но корень проблемы с затенением не в normal map, а в модели, и она будет всегда будь образцом.
Если оставить в стороне правила UVs , проблемы, которые они вызывают, минимальны. Если вы об этом знаете, тогда это ваш выбор: сэкономить немного UV пространства и игнорировать края и проблемы, которые могут возникнуть, вместо того, чтобы делать их правильно, поскольку вам придется подойти слишком близко. чтобы заметить проблемы. иногда между краями появляется большой зазор, со мной такое случалось.
Если вы не можете иметь прямоугольники со средними нормалями вершин или мягкими, они должны выглядеть как прямоугольники с жесткими краями, потому что они представляют собой ребра под углом 90 °. Если вы хотите использовать мягкие края, вам нужно создать фаску.
Боксеры должны иметь 100% твердые края, цилиндры должны быть твердыми сверху и снизу, а бока мягкими.
Для низкополигональных моделей я предлагаю делать скосы, во многих случаях даже небольшой скос будет иметь большое значение, особенно сегодня, когда нет оправдания тому, чтобы иметь коробку вообще без скоса для чего-то подобного.
Пресеты 3DCoat — это всего лишь небольшие вариации, которые вы даже можете выбрать вручную, используя неизвестные настройки, вам не нужны пресеты, они просто помогают 3DCoat интерпретировать normal map и модель, но я никогда не доверяю пресетам, потому что, как вы говорите, пресет Unity должен быть установлен в MikkTSpace. Но я хочу сказать, что речь идет не только о normal map OpenGL и DirectX.
Итак, когда я использую 3DCoat , который обычно предназначен для рисования, все работает нормально, но это потому, что я слежу за тем, чтобы все на моем low-poly тоже было хорошо, я имею в виду, чтобы создавать хорошие карты нормалей и заставлять их работать везде, где вам нужен хороший low-poly. поли, который может уловить любые высокополигональные детали, которые вы сделали. Никакого волшебства, это просто работает, потому что я забочусь обо всем, например, о группах сглаживания, UVs и всем таком.
Я имею в виду, что модель с краями 90° должна автоматически устанавливаться на жесткие края, другого пути нет, и все. не имеет значения, имеет ли куб 6 сторон, как в этом случае, или 1000 делений ширины, высоты и глубины. Если вы не установите угол 90° в качестве жесткого края, он всегда будет иметь странное затенение на тех краях, которые имеют угол 90°, но настроены на мягкий или что-то в этом роде.
Если вы применяете одну группу сглаживания ко всему набору объектов… это неправильно, потому что вы не можете сделать мягкие края для коробок, особенно если эти объекты представляют собой всего лишь кубы с 6 гранями.
Вы не можете «сгладить» что-то подобное, особенно если у вас простой блок из 6 полигонов. Если вы хотите использовать блок, установите для всех сторон значение «Жесткие края». Или другой единственный способ — добавить скос по краям, чтобы сделать угол 90 ° резким, а затем сделать его мягким. Baking normal map , чтобы скрыть проблему, не является решением, она может выглядеть немного лучше, но ошибка затенения в модели все еще существует. Даже цилиндры должны иметь мягкие края по бокам, а на верхней и нижней гранях они должны быть жесткими, если только вы не добавите скос.
Итак, вопрос в следующем: хотите ли вы по-прежнему хранить все в одной группе сглаживания? если вы не поработаете над этим должным образом и не установите резкие края, твердые, а мягкие края — мягкие, или не добавите скосы на каждом углу 90 °, тогда ничто не решит вашу проблему, и вам придется просто скрыть проблему с помощью normal map и притвориться, что проблем нет. существует.
Надеюсь, я доступно объяснил, в чем заключаются проблемы, и это может помочь вам в будущих запеканиях normal map .
Удачи и хорошего дня!