Как отрендерить сетку

Опубликовано by AJIEHA . Размещено в Уроки

В статье приведены различные способы рендера сетки модели.

maya2014_wireframe_01

Способ №1: Рендер сетки с помощью опции Contour в mental ray

Настройка рендера

1. Перейти во вкладку «Features».

2. Прокрутить ее с MMB вниз и раскрыть вкладку «Contours».

3. Включить опцию «Enable Contour Rendering».

4. Развернуть раздел «Draw by Property Difference».

5. Включить опцию «Around all Poly Faces».

Примечание: Для рендера сетки необходимо проделать все описанные выше шаги.

maya2014_wireframe_02

Настройки Maya 2014

По умолчанию mental ray в Maya 2014 рендерит изображение по методу «Unified Sampling». Этот метод не поддерживает рендер типа Contour, что характерно только для Maya 2014.

1. Во вкладке Quality в разделе Sampling section включите опцию «Legacy Sampling Mode», чтобы контурные линии начали рендериться. При этом Max Sample Level должен составлять 2.

maya2014_wireframe_03

Настройки материалов

1. Для начала создайте Lambert белого цвета и назовите его «mat_wireframe».

2. Перейдите в Shading Group, например: “lambert2SG”, и переименуйте ее в “mat_wireframeSG”.

3. Разверните подраздел «Contours» в разделе mental ray.

4. Включите опцию «Contour rendering», цвет установите черный.

5. Назначьте объекту материал и отрендерьте сцену.

6. При необходимости настройте толщину линии (обычно значение 0.5 выглядит вполне симпатично на рендере).

maya2014_wireframe_04

7. Теперь осталось только применить материал на необходимые объекты, для которых нужно отрендерить сетку, и нажать на кнопку Render.

Примечание: Если вы рендерите в смуз меш превью (в режиме троечки), mental ray отрендерит более сложную сетку. В таких случаях необходимо выбрать объект и перейти в режим единички, так mental ray отрендерит лоупольную версию модели.

Способ №2: Рендер сетки с помощью команды UV Snapshot

А этот способ стоит делать только по видео. Он довольно сложный и не очень-то логичный, но упоминания стоит хотя бы для общего развития.

Способ №3: Maya Vector

1. Выделите необходимые объекты и откройте настройки рендера. Из списка рендереров выберите Maya Vector.

2. Перейдите в настройки рендерера.

3. Отключите опцию Fill objects.

4. Отключите опцию Show back faces.

5. Выберите Include Edges во вкладке Edge Options.

6. Определитесь с толщиной ребра.  Обычно значение 0.5 выглядит вполне симпатично на рендере.

7. Выберите Entire Mesh для Edge Style.

8. Нажмите на кнопку Render.

maya2014_wireframe_05

Способ №4: Maya Toon shader

1. Выберите все объекты и примените к ним Toon shader.

2. В настройках PFXToonShape отключите ProfileLines и Border Lines, включите Crease Lines.
3. Во вкладке Crease Lines отключите Hard Creases Only, для опции Crease Min/Max установите значение 0.

4. Определитесь с толщиной ребра, которая зависит от того, насколько ваша модель удалена от камеры.

5. Отрендерьте сцену с помощью Maya Software.

Способ №5: Скрипт на Python

Способ для ленивых. С помощью скрипта на Python, приведенного ниже, можно быстро и легко получить такой же результат, как и в первом способе.

 

import pymel.core as pm

import subprocess, os

 def findRenderCam():

    """

    Finds current rendercam or returns "persp"

    return: Camera

    """

    for cam in pm.ls(cameras=True):

        if cam.renderable.get():

            return cam

    pm.PyNode("persp").renderable.set(True)

    return pm.PyNode("persp")

     def create_wireframe_RL(name="wireframe"):

    """

    Creates wireframe material

    Creates wireframe layer

    Adds all geometry and rendercam to the renderlayer

         name: str layername

    """

    mat_name = "%s_mat" % name

     if not pm.objExists(mat_name):       

        matNode = pm.shadingNode("lambert", n = mat_name, asShader = True)

        matNode.setColor([1,1,1])

                 matSGNode = pm.sets(renderable=True, noSurfaceShader=True, empty=True, name="%sSG" % mat_name )

        matSGNode.miContourEnable.set(1)

        matSGNode.miContourColor.set([0,0,0])

        matSGNode.miContourWidth.set(1.5)

        matNode.outColor >> matSGNode.surfaceShader

                 if not pm.objExists(name):

            render_layer = pm.createRenderLayer(n = name)

            render_layer.setCurrent()

            render_layer.addMembers(pm.ls(geometry = True, cameras = True))

            matSGNode.message >> render_layer.shadingGroupOverride

 def render_wireframe(name="wireframe"):

    """

    Renders Renderlayer

    using Mental Ray Legacy options

    """

    pm.mel.miCreateDefaultNodes()

         renderGlobals = pm.PyNode("defaultRenderGlobals")

    renderGlobals.currentRenderer.set("mentalRay")

    renderGlobals.imageFormat.set(3)

         #Legacy Options

    miOptions = pm.PyNode("miDefaultOptions")

    miOptions.miRenderUsing.set(2)

    pm.mel.miSetRenderUsingValue()

    miOptions.maxSamples.set(2)

     pm.PyNode("miDefaultFramebuffer").contourEnable.set(1)

    miOptions.contourPriData.set(1)

         #Set Camera options

    renderCam = "RENDER_CAM"

    if not pm.objExists(renderCam):

        renderCam = findRenderCam()   

    [cam.renderable.set(renderCam == cam.name()) for cam in pm.ls(cameras=True)]

     

    pm.editRenderLayerAdjustment(pm.PyNode(renderCam).backgroundColor)

    pm.PyNode(renderCam).backgroundColor.set([1,1,1])

    pm.runtime.RenderViewWindow()

         #Render Image

    f = pm.Mayatomr(pv = True, layer="wireframe")

    f = os.path.normcase(f)

    os.system("open %s" % f)

    subprocess.Popen(r'explorer /select,"%s"' %f)

         #Reset to Unified Sampling

    miOptions.miRenderUsing.set(0)

    pm.PyNode("miDefaultFramebuffer").contourEnable.set(0)  

 if __name__ == "__main__":

    create_wireframe_RL()

    render_wireframe()

Журналист: Алена

Вас могут также заинтересовать:

Тэги: , , , , ,


Присоединяйтесь к нашему сообществу вКонтакте и читайте свежие новости и статьи о мире 3D