Как отменить преобразование по матрице в Blender? - PullRequest
0 голосов
/ 30 ноября 2010

У меня есть выбранная сетка (творчески называемая 'selected'), с которой я хочу работать в локальном пространстве, поэтому я использую следующее:

    tmesh = NMesh.GetRawFromObject(selected.name)
    tmesh.transform(selected.matrix)

Затем я выполняю несколько вычислений по его вершинам и удаляю их по индексу, что прекрасно работает.

Что не очень хорошо работает, так это когда я пытаюсь добавить их позже из списка объектов vert.co. В итоге они располагаются правильно друг относительно друга, но нигде рядом с исходными вершинами.

            for v in tmesh.verts:
                 toAdd.append(v.co)
              mesh = selected.getData(mesh=1)
              mesh.verts.extend(toAdd)

Я понял, что это потому, что объект находится в другом пространстве. Поэтому я думаю , что мне нужно сделать, это перевести новые вершины обратно в старое пространство ... но мое понимание того, что именно здесь происходит, в лучшем случае нечетко. Как мне «отменить» команду tmesh.transform (selected.matrix)?

Более подробное объяснение того, что я делаю, можно найти здесь: http://www.kellbot.com/2010/11/lego-plans-now-with-better-rendering/

1 Ответ

1 голос
/ 30 ноября 2010

Я не знаком с Блендером конкретно, но после быстрого взгляда на документацию, но в принципе кажется, что вы должны быть в состоянии использовать метод invert() Matrix для получения обратное преобразование selected.matrix (возможно, после первого copy() его).

...