1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Инвертирование нормалей некоторых полигонов

Тема в разделе "MAXScript", создана пользователем Castello2401, 2 авг 2014.

Модераторы: Savin Denis
  1. Castello2401

    Castello2401 Пользователь сайта

    С нами с:
    08.04.2014
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    Есть много импортированных моделей. У этих моделей нормали некоторых полигонов повернуты внутрь. От туда, от куда были импортированные эти модели такое поведение нормально. Но туда, куда я собираюсь экспортировать эти модели, это недопустимо. Решение задачи я вижу таким:
    Представить сетку модели в виде 2D развертки. В итоге будет видно, что большинство нормалей направлены в одну сторону (good faces), а меньшинство в противоположенную (bad faces). Инвертировать нормали плохих фейсов. Прошу помочь с реализацией.
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Выделяем модель. Добавляем модификатор Edit Mesh.
    Добавляем модификатор Normal и включаем Unify Normals.
    Такой вариант решения задачи подходит для вашего случая?
     
    Rkuzminih нравится это.
  3. Александр Якушев

    Александр Якушев Активный участник

    С нами с:
    13.08.2009
    Сообщения:
    77
    Симпатии:
    1
    Баллы:
    7
    Если объекты не впуклые, то можно попробовать такую функцию:
    Код:
    fn unifyNormal obj =
    (
        ObjNumFaces = obj.numfaces -- chislo faysov objecta
        arrayMeshData = #()
        arrayFaces = #()
        for f = 1 to ObjNumFaces do append arrayMeshData #(getFaceNormal obj f, meshop.getFaceCenter obj f)
        for f = 1 to ObjNumFaces do
        (
            theNorm = normalize arrayMeshData[f][1]
            theCent = normalize arrayMeshData[f][2]
            if (dot theNorm theCent)<= 0 do append arrayFaces f
            )
        meshop.flipNormals obj arrayFaces
        update obj --update the mesh
        )
    Правда она только для mesh объектов
    dot theNorm theCent - скалярное произведение нормали с нормализованным вектором из центра объекта к центру фэйса.
     
Модераторы: Savin Denis

Поделиться этой страницей