В статье приведены различные способы рендера сетки модели.
Способ №1: Рендер сетки с помощью опции Contour в mental ray
Настройка рендера
1. Перейти во вкладку «Features».
2. Прокрутить ее с MMB вниз и раскрыть вкладку «Contours».
3. Включить опцию «Enable Contour Rendering».
4. Развернуть раздел «Draw by Property Difference».
5. Включить опцию «Around all Poly Faces».
Примечание: Для рендера сетки необходимо проделать все описанные выше шаги.
Настройки Maya 2014
По умолчанию mental ray в Maya 2014 рендерит изображение по методу «Unified Sampling». Этот метод не поддерживает рендер типа Contour, что характерно только для Maya 2014.
1. Во вкладке Quality в разделе Sampling section включите опцию «Legacy Sampling Mode», чтобы контурные линии начали рендериться. При этом Max Sample Level должен составлять 2.
Настройки материалов
1. Для начала создайте Lambert белого цвета и назовите его «mat_wireframe».
2. Перейдите в Shading Group, например: “lambert2SG”, и переименуйте ее в “mat_wireframeSG”.
3. Разверните подраздел «Contours» в разделе mental ray.
4. Включите опцию «Contour rendering», цвет установите черный.
5. Назначьте объекту материал и отрендерьте сцену.
6. При необходимости настройте толщину линии (обычно значение 0.5 выглядит вполне симпатично на рендере).
7. Теперь осталось только применить материал на необходимые объекты, для которых нужно отрендерить сетку, и нажать на кнопку Render.
Примечание: Если вы рендерите в смуз меш превью (в режиме троечки), mental ray отрендерит более сложную сетку. В таких случаях необходимо выбрать объект и перейти в режим единички, так mental ray отрендерит лоупольную версию модели.
Способ №2: Рендер сетки с помощью команды UV Snapshot
httpvh://www.youtube.com/watch?v=ZUFAtkVJdpg&NR=1
А этот способ стоит делать только по видео. Он довольно сложный и не очень-то логичный, но упоминания стоит хотя бы для общего развития.
Способ №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.
Способ №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() |
Журналист: Алена