创建女科幻人物工作流程

修改
鏉ユ簮: xiao_q 浏览 2998 日期 2017-05-12 0

在本文中,我将展示制作游戏模型的步骤。 它将覆盖使用诸如ZBrush,Maya和Marmoset Toolbag等软件的高分辨率,低分辨率,自定义阿尔法,构图和渲染。

In this article I will go through the steps of making the Baby Cakes game model. It will cover high-res, low-res, custom alphas, posing and Rendering using softwares like ZBrush, Maya and Marmoset Toolbag.

Concept

The idea to make this character came when I saw its concept, by Trevor Claxton, on the internet. I thought it was such a fresh and awesome design that I just could not hold myself back from doing it. Also, the challenge to recreate such an amazing piece was another important motivational aspect.

概念

这个角色的想法是当我在互联网上看到Trevor Claxton它的概念。 我以为这是一个这么新鲜和令人敬畏的设计,我只是不能阻止自己做这个。 此外,重新创造这样一个惊人的作品的挑战是另一个重要的动机方面。

Proportions

The first thing to do was to get the proportions of the body right. In this specific model I used a female base mesh that I have made before and imported into ZBrush. That allowed me to save some time and jump straight to the proportions and silhouette I needed. I used the actual concept as reference. Even though the concept was not in a modeling pose, it was good enough to extract some information from it, like leg size, waist size, and torso size. I really wanted to get a narrow waist, thick thighs and small feet. It was important to get a solid body base because it served as reference for everything else on the model.

比例

首先要做的就是让身体正确的比例。 在这个具体的模型中,我使用了我以前制作的母基网格并导入ZBrush。 这让我节省了一些时间,直接跳到我需要的比例和剪影。 我用实际的概念作为参考。 即使这个概念不是在建模姿势中,但是从腿部尺寸,腰围尺寸和躯干尺寸中提取一些信息也是足够好的。 我真的想得到一个狭窄的腰,厚的大腿和小脚。 得到一个坚实的身体基础是重要的,因为它是模型上的其他一切的参考。

Suit blockout

Once I was happy with the body proportions, I could then move on to the suit blockout. In ZBrush, I duplicated the body SubTool, went down the 2nd subdivision and the deleted the lowest and highest subdivisions.

Then I masked the whole body but the head (1). After masking I clicked Hide Point, to hide the head, and then Delete Hidden, to get rid of the head. That left me a second SubTool with only the body (2). Now with a basemesh for the suit I could start blocking the shapes and details out of the suit with brushes like Standard, Clay tube, Clay Buildup etc (3). Then it was just a matter of adding and polishing the shapes and details (4).

西装封闭

一旦我对身体的比例感到满意,我可以继续前进到西装封闭。 在ZBrush中,我复制了SubTool的身体,第二个细分下来,删除了最低和最高的细分。

然后我掩盖了整个身体,但头部(1)。 屏蔽后,我点击隐藏点,隐藏头部,然后删除隐藏,以摆脱头部。 这让我第二个只有身体的SubTool(2)。 现在有了这款西装,我可以用标准,粘土管,粘土堆积等刷子开始阻挡衣服的形状和细节。 那就只是添加和抛光形状和细节的问题(4)。

High-res retopology

After sketching out all the details of the suit, I used Decimation Master in ZBrush to lower the polygon count.

高分辨率重构

在勾画出西服的所有细节之后,我使用ZBrush中的Decimation Master降低多边形数量。

Moving to Maya

Then I imported the decimated mesh into Maya (1) and started remaking the suit with Maya's new Modeling Tool Kit (2) until I had all the parts of the suit rebuilt with a cleaner topology (3).

移动到Maya

然后我将抽取的网格导入Maya(1),并开始使用Maya的新建模工具包(2)重新制作西服,直到我使用更清晰的拓扑(3)重新组装了所有套装。

Custom alphas

Heading toward the end of the high-poly modeling stage, I made some custom alphas from 3D models to add the final details on my model. In the image below you can see the 3D models on the left and the correspondent alphas on the right.

自定义阿尔法

在高分辨率建模阶段结束之际,我从3D模型中做了一些自定义的阿尔法,以添加我的模型的最终细节。 在下面的图片中,您可以看到左侧的3D模型和右侧的通讯对象。

Adding detail with alphas

The process was something like the following:

1. Model a shape that you want to use as alpha in ZBrush and export as OBJ

2. Import it to ZBrush, place it in the canvas and then press 'T' to drop the tool

3. Click In the brush palette and choose the MRGBZGrabber brush

4. With the MRGBZGrabber brush selected, click-and-drag anywhere on the canvas until it covers the whole canvas. When you release it, ZBrush will capture and store color and ZDepth information from the canvas

5. You will find the ZDepth information in the alpha sub-palette. Select the alpha and export

6. Open it in Photoshop and adjust the document size to be square

用阿尔法添加细节

该过程类似于以下内容:

1.在ZBrush中将要用作alpha的形状建模并导出为OBJ

2.将其导入到ZBrush中,将其放在画布中,然后按“T”放下工具

3.在画笔调色板中单击并选择MRGBZGrabber画笔

4.选择MRGBZGrabber画笔后,在画布上的任意位置单击并拖动,直到其覆盖整个画布。 当您释放它时,ZBrush将从画布中捕获并存储颜色和ZDepth信息

5.您将在Alpha子调色板中找到ZDepth信息。 选择alpha并导出

6.在Photoshop中打开它,并将文档大小调整为正方形

Final details

With the high-res retopology done, I imported all the pieces back into ZBrush as separated SubTools for final detailing and polishing. I used the alphas I created and also, with the Standard brush, I added some folds on the fabric and rubber areas.

最终细节

随着高分辨率重新做法,我将所有的部分作为分离的SubTools导入到ZBrush中,以进行最终的细化和抛光。 我使用了我创建的阿尔法,而且用标准的刷子,我在织物和橡胶区域添加了一些褶皱。

Game-res model

From the beginning I wanted this to be a character for a game, so once the high-res model was done, it was time to work on the game model. At this point the process was very similar to the 'High-Res Re-topology' step.

I again used Decimation Master on my high-res model to get a lower polygon count version (1). Then I could import it into Maya for the re-topology, but this time for the game-res version, something around 15k to 20k polygons (2). Once the re-topology work was done I then split the model into a few parts which each one could have their own UV sets and textures ? head (yellow), hair (red), eyes and teeth (green) and body (blue) (3).

It's important the break the materials up like that because you want to be able to control the material properties and resolution independently from each other, especially the head since it is usually the focal point of the character.

Game-res模式

从一开始我就希望这是一个游戏的角色,所以一旦高分辨率模型完成,那么现在是时候在游戏模型上工作了。 此时该过程与“高分辨率再拓扑”步骤非常相似。

我再次使用Decimation Master在我的高分辨率模型下获得较低的多边形数量版本(1)。 然后我可以将其导入到Maya中进行重新拓扑,但是这次是游戏-res版本,大约15k到20k的多边形(2)。 一旦重新拓展工作完成,我然后将模型分成几个部分,每个部分可以有自己的UV集和纹理? 头(黄),头发(红色),眼睛和牙齿(绿色)和身体(蓝色)(3)。

重要的是要打破这样的材料,因为您希望能够独立地控制材料特性和分辨率,特别是头部,因为它通常是人物的焦点。

Facial topology

Another thing to take in consideration here is the facial topology. It's important that the loops are placed respecting the face structure, muscles and so on. That will allow the face to have a better deformation when animators are working on the face expressions. Although that wasn't the goal here, it is always a good practice to do them.

Textures were pretty straight forward. Normal map and occlusion map were baked with xNormal. Cavity maps were extracted from normal maps in Photoshop with a personal set of actions, but you could get it with the xNormal filter for PS or nDO. For the face I used real photo reference projection in Mudbox.

面部拓扑

另外需要考虑的是面部拓扑。 重要的是,环绕着脸部结构,肌肉等等。 当动画师在面部表情上工作时,这将使脸部变形更好。 虽然这不是目标,但总是一个很好的做法。

纹理非常简单。 正常地图和遮挡图用xNormal烘烤。 从Photoshop中的正常贴图中提取腔图,并附有一组个人动作,但您可以使用PS或nDO的xNormal过滤器。 对于脸,我在Mudbox中使用了真正的照片参考投影。

Posing I

To give the character some attitude in the final render, I decided to pose the model just like the concept. For that I imported game model back into ZBrush and used the transpose tools.

The process of posing is as follows:

1. Mask out the portion of the model you want to pose

2. Select the Transpose Rotate tool and place on of the ends of the transpose line at the desired pivot point

3. Click-and-drag the other end to rotate and pose the unmasked portion

摆姿势

为了让角色在最后的渲染中有一些态度,我决定像这个概念一样构建模型。 为此,我将游戏模型导入ZBrush并使用转置工具。

冒充的过程如下:

1.遮掩你想要的模型部分

2.选择移调旋转工具,并将其放置在所需枢轴点处的转置线的末端

3.单击并拖动另一端旋转并构建未屏蔽的部分

Posing II

I basically followed these three steps to pose the whole body. It took some back and forth, masks, touch ups and right placement of the transpose tool to get everything correctly posed but it was, definitely, much faster than the traditional way of rigging.

摆姿势II

我基本上按照这三个步骤来构成全身。 它采取了一些来回,面具,触摸ups和正确安置的转置工具,以获得一切正确提出,但它绝对比传统的索具方式快得多。

The render

To render this character I used Marmoset Toolbag. It was really good because it gave the model that in-game look since it's pretty much a game engine. But before taking the model to Marmoset, there are a couple of things that you need to do when exporting the model from Maya to Marmoset.

1. Make sure you split the model based on the UV sets, and name them accordingly to each object for easy management later, then make sure you select them all to export at the same time

2. Then go to File > Export Selection. In the Export window, choose OBJexport as your file type and make sure Groups is turned on. This is important to guarantee that the model will be exported as separated objects instead one object together

3. Importing it into Marmoset you will get a list of chunks that match the objects exactly in Maya, and then you will be able assign one material for each one of them

渲染

为了渲染这个角色,我使用了Marmoset Toolbag。 这是非常好的,因为它给了模型,游戏中的外观,因为它几乎是一个游戏引擎。 但是,在将模型引入Marmoset之前,在将模型从Maya导出到Marmoset时,您需要执行几件事情。

1.确保根据UV组拆分模型,并将它们相应地命名给每个对象,以便以后进行管理,然后确保同时选择它们全部导出

2.然后转到文件>导出选择。 在导出窗口中,选择OBJexport作为文件类型,并确保组已打开。 这对于保证模型将被导出为分离的对象而不是一个对象在一起很重要

3.将其导入到Marmoset中,您将获得一个与Maya中完全匹配对象的块的列表,然后您将可以为其中的每一个分配一个材料

Lighting setup

After I was done assigning all the materials, with the correspondent textures, I made a quick a lighting setup. First I chose Garage in the Sky Lighting Presets (1) to use as my global lighting. Then I added a couple of dynamic lights (2), one over the head (A) to slightly illuminate the face and another far on the side (B). After that it was just a matter of placing the camera, adjusting the field of view, which in this case was pretty low, 15.00, and rendering it (3).

照明设置

在完成了所有材料的分配之后,用相应的纹理,我做了一个快速的照明设置。 首先,我选择车库在天空照明预设(1)作为我的全球照明。 然后我添加了一些动态灯(2),一个在头(A)上轻轻地照亮脸部,另一个远在侧面(B)。 之后,这只是一个放置相机的问题,调整视野,在这种情况下,这是非常低的15.00,并渲染(3)。

Compositing

With the mask in the alpha channel of the rendered image, I could easily isolate the character from the original background (A). I added an occlusion pass in Multiply mode to give it a little more shadow information (B). Then I created a simple background in Photoshop that matched the lighting in the render, painted some ground shadows (C) and added some layer adjustments to tweak the color and saturation to get my final render (D).

合成

使用渲染图像的Alpha通道中的蒙版,我可以轻松地将字符与原始背景(A)隔离开。 我在“乘法”模式中添加了一个遮挡传递给它一个更多的阴影信息(B)。 然后,我在Photoshop中创建了一个简单的背景,与渲染中的照明相匹配,绘制了一些地面阴影(C),并添加了一些图层调整来调整颜色和饱和度,以获得最终渲染(D)。

评论

{{ username ? username.charAt(0).toUpperCase() : '?' }}
Ctrl+Enter 发布
{{ (c.username || c.author_name || '?').charAt(0).toUpperCase() }}
{{ c.username || c.author_name }} {{ Utils.formatDate(c.created_at) }}