Difference between revisions of "Materials for models:ko"

From Valve Developer Community
Jump to: navigation, search
m (소스엔진에서 쓰이는 모델의 종류)
(소프트이미지 모드툴에서)
Line 31: Line 31:
 
# 만들어진 모델을 선택.
 
# 만들어진 모델을 선택.
 
# 소프트 이미지를 렌더러 모들 전환 합니다. - 단축키 3번을 누르면 전환됩니다.
 
# 소프트 이미지를 렌더러 모들 전환 합니다. - 단축키 3번을 누르면 전환됩니다.
 
+
# 옆에 메뉴 버튼 중에서 Render 버튼을 누르면 나오는 메뉴에서 '''Blinn''' 을 선택하면 선택한 모델에 블린(Blinn) 재질이 적용됩니다.
# select XSI's Render mode (top of left sidebar).
+
# Texture 버튼 메뉴에서 Image 를 누르면 이미지-텍스쳐 윈도우(Image-Texture window) 가 나타납니다:
# from Render>Get-Material select '''Blinn''' (close the Material window)
+
# 윈도우를 잘 찾아보면 New 버튼이 보이는데 이걸 누르면 파일 고르는 윈도우가 뜨게 됩니다.  
# from Render>Get-Texture select Image to open the Image-Texture window:
 
# in Image-Texture tab>Image press "New" to locate & import your new [[TGA]] texture file.
 
# in Image-Texture tab>Texture Projection press "New" and select '''Unique UVs (polymesh)''' (close the Image window)
 
# Press "Alt+7" to open the [[XSI Texture Editor]] window.
 
  
 
* If you mess up your texture mapping and want to start over:
 
* If you mess up your texture mapping and want to start over:
Line 54: Line 50:
 
* Making judgments about the progress of your textured character should be done directly in the Source engine, before getting too far with your material, export a vtf, create a vmt, build you mdl and look at the model in the engine. Working the fine points of texturing and shader parameters can only really happen after you’ve seen your model in the Engine.
 
* Making judgments about the progress of your textured character should be done directly in the Source engine, before getting too far with your material, export a vtf, create a vmt, build you mdl and look at the model in the engine. Working the fine points of texturing and shader parameters can only really happen after you’ve seen your model in the Engine.
  
 +
== 만들어둔 체커보드 텍스쳐 응용 ==
 +
*체커보드 - 검은색 흰색 사각형 모양의 체스 보드 처럼 생긴 텍스쳐를 이용하면 UV 일그러짐이나 팀 등의 여러 증상들을 시각적으로 발견이 가능합니다.
 
===Checkerboard Template Texture===
 
===Checkerboard Template Texture===
 
* Using a checkerboard texture is a good way to start laying out your UV coordinates; this lets you see very quickly if you have any distortions, streaks, or seams that may need to be corrected. Also, using a checkerboard texture gives you a very good way to measure how much texel density you have on the various parts of your model, as you define the UV’s, some areas like faces may need a bit of extra density, but overall you should strive for even and consistent texel density across your model. The default noicon.pic file in XSI is a good choice or you may use this file, Checkerboard Starter Texture (right-click save as...) included in the SDK.
 
* Using a checkerboard texture is a good way to start laying out your UV coordinates; this lets you see very quickly if you have any distortions, streaks, or seams that may need to be corrected. Also, using a checkerboard texture gives you a very good way to measure how much texel density you have on the various parts of your model, as you define the UV’s, some areas like faces may need a bit of extra density, but overall you should strive for even and consistent texel density across your model. The default noicon.pic file in XSI is a good choice or you may use this file, Checkerboard Starter Texture (right-click save as...) included in the SDK.
Line 60: Line 58:
 
* Export a .VTF as early as possible and load preview your model in the engine, using the mat_showmiplevels command at the console, check what mip level you’re seeing at some of the most common encounters your character is going to have during gameplay. While it may seem that bigger is better, this isn’t always the case, mipmapping can force your large texture down in size until blurriness becomes a problem.
 
* Export a .VTF as early as possible and load preview your model in the engine, using the mat_showmiplevels command at the console, check what mip level you’re seeing at some of the most common encounters your character is going to have during gameplay. While it may seem that bigger is better, this isn’t always the case, mipmapping can force your large texture down in size until blurriness becomes a problem.
  
===Multi-layered Textures===
+
===다단계 형태의 텍스쳐 (Multi-layered Textures) ===
* You should try to only use one basetexture, unless material demands require otherwise. Multiple textures on a model can drastically affect rendering time. If you do need to create multiple textures on one model, you must first select a group of polygons, make a cluster of them, then apply the material and image to your cluster. Make sure that you have your preferences set to "reload externally modified images on focus". This reloads textures when you alt-tab back to XSI from another program like Photoshop, a good time saver.
+
이제 당싱은 하나의 텍스쳐만을 이용한 모델을 만들어 보았겠지요? 하지만 세상은 좀 더 복잡한것이 필요로 할때가 있습니다. 크고 다양한 형태위 재질, 텍스쳐등을 이용한다면 리얼타임 형태라 하더라도 프레잉을 깍아 먹거나 렌더링이 오래 걸리게 되는 요소가 되기도 합니다.
 +
 
 +
그렇다 하더라도 당신이 한모델에서 여러가지 형태의 재질이 포함이 된 하나의 모델 파일을 원한다면 클러스터 지정이 그 답이 될것입니다.
 +
* 원하는 만큼의 폴리곤을 선택을 한뒤에 단축키 '''CTRL+L''' 을 누르면 선택된 폴리곤이 하나의 클러스터로 그룹화 됩니다.
 +
** 다양한 클러스터를 만들고 원하지 않는다면 해당 클러스터만 지워두면 됩니다.  
 +
** 엔진 에서 조작이 된다면 다양한 스킨 형태의 모델이 단지 게임엔진에서 파일 지정만 바꾸어주거나 하는 형태로 다른 팀 모델로 보여지게 됩니다.  
 +
** 폴리곤 덩어리 하나로 한쪽은 나무, 한쪽은 강철 재질 같은 아수라 백작 같은 표현이 가능합니다.  
 +
* TIP Preference - 설정에서  "reload externally modified images on focus" 로 설정해 놓으면 Alt + tab 을 할 때마다 소프트 이미지에서 텍스쳐 파일을 다시 불러들이게 됩니다. 포토샵으로 작업을 할시에 아주 편리한 기능이죠.
  
 
=Compiling your.VTF : Valve Texture Format=
 
=Compiling your.VTF : Valve Texture Format=

Revision as of 00:47, 10 April 2016

English Русский 日本語

개 요

소스 엔진을 위한 캐릭터, 물체 형태의 프롭 모델을 만드는 데는 최소한 3가지의 요소를 필요로 합니다.

  • 기본 메쉬모델(주로 티자 포즈형태의 인간형 모델 이거나 주변 사물들의 모양을 따한 정점값 정보가 기록된 파일)과 시퀀스 애니메이션 정보가 포함된 파일은 시퀀스 SMD 파일들을 StudioMDL로 파일로 컴파일하면 나오는 파일인 mdl 확장자의 모델(Model) 파일.
  • 빛의 반사 특성및 재질, 양감, 반사등의 특성값을 지정해주는 VMT (Valve Material Texture) 확장자의 텍스쳐 파일. **FIXIT**
  • 물체의 질량 무게 파손등을 시뮬레이팅 해주기 위한 값의 정보를 VTF

소스엔진에서 쓰이는 모델의 종류

  • 프롭스: 스카이박스 및 배경 그리고 총기 및 주변에 널려 있는 물체들.
  • 캐릭터 모델 및 조정이 가능한 자동차 같은 리깅된 물체들.
    • 기본적인 티 포즈 (T-Pose) 형태의 레러런스 데이터를 지닌 파일.
  • 뷰모델 Viewmodel : 주로 총을 든 모습을 1인칭 형태로 카메라로 찍은듯이 보여줍니다.

정확히 말해서 세 확장자의 파일 MDL이 메쉬 데이타가 포함된 파일, VMT 텍스쳐 파일 정보를 지니고 있는 파일 VTF 게임에 쓰이는 텍스쳐 파일로 딱 나눌수는 없지만 대략 주요한 특징임을 받아 들이시고 앞으로 공부하면서 발견 되는 특성들은 이곳에 적어 주시기를 바랍니다. 그리고 세 파일의 정보는 컴파일 고정에서 각 파일의 정보를 서로 공유하게 됩니다.

이제 이 3파일을 StudioMDL을 가지고 컴파일을 해야 합니다. [Crowbar]을 추천합니다.

모델 작성의 VMT와 관련된 순서로만 추리자면:

  1. 모델 작성 - 메쉬 모델 작성후 텍스쳐를 입히고
  2. 텍스쳐 파일들을 VMFTool을 이용해서 벨브 텍스쳐 파일등으로 바꾸어 주면 됩니다.

TODO QC 명령어중 VMT 관련 내용 적기.

소프트이미지 모드툴에서

  • 소프트 이미지에서 텍스쳐를 입히는 방법에 대해서 알아보자면:
  1. 만들어진 모델을 선택.
  2. 소프트 이미지를 렌더러 모들 전환 합니다. - 단축키 3번을 누르면 전환됩니다.
  3. 옆에 메뉴 버튼 중에서 Render 버튼을 누르면 나오는 메뉴에서 Blinn 을 선택하면 선택한 모델에 블린(Blinn) 재질이 적용됩니다.
  4. Texture 버튼 메뉴에서 Image 를 누르면 이미지-텍스쳐 윈도우(Image-Texture window) 가 나타납니다:
  5. 윈도우를 잘 찾아보면 New 버튼이 보이는데 이걸 누르면 파일 고르는 윈도우가 뜨게 됩니다.
  • If you mess up your texture mapping and want to start over:
1. Press "8" to open the Scene Explorer, then navigate to the Texture Projection like this:
-> Cube (or your base object)
--> Polygon Mesh
---> Clusters
----> Texture_Coordinates_Auto
-----> Texture Projection (Explicit UVWs) 
2. Now left-click "Texture Projection (Explicit UVWs)" to select it, then press your "Delete" key to delete it.
3. Check the 3D view (in 'textured' mode) to make sure you got the right one. If not, press "Ctrl+Z" to undo and take another shot at it.

Proper Previewing

  • Making judgments about the progress of your textured character should be done directly in the Source engine, before getting too far with your material, export a vtf, create a vmt, build you mdl and look at the model in the engine. Working the fine points of texturing and shader parameters can only really happen after you’ve seen your model in the Engine.

만들어둔 체커보드 텍스쳐 응용

  • 체커보드 - 검은색 흰색 사각형 모양의 체스 보드 처럼 생긴 텍스쳐를 이용하면 UV 일그러짐이나 팀 등의 여러 증상들을 시각적으로 발견이 가능합니다.

Checkerboard Template Texture

  • Using a checkerboard texture is a good way to start laying out your UV coordinates; this lets you see very quickly if you have any distortions, streaks, or seams that may need to be corrected. Also, using a checkerboard texture gives you a very good way to measure how much texel density you have on the various parts of your model, as you define the UV’s, some areas like faces may need a bit of extra density, but overall you should strive for even and consistent texel density across your model. The default noicon.pic file in XSI is a good choice or you may use this file, Checkerboard Starter Texture (right-click save as...) included in the SDK.

What size should my texture be?

  • Export a .VTF as early as possible and load preview your model in the engine, using the mat_showmiplevels command at the console, check what mip level you’re seeing at some of the most common encounters your character is going to have during gameplay. While it may seem that bigger is better, this isn’t always the case, mipmapping can force your large texture down in size until blurriness becomes a problem.

다단계 형태의 텍스쳐 (Multi-layered Textures)

이제 당싱은 하나의 텍스쳐만을 이용한 모델을 만들어 보았겠지요? 하지만 세상은 좀 더 복잡한것이 필요로 할때가 있습니다. 크고 다양한 형태위 재질, 텍스쳐등을 이용한다면 리얼타임 형태라 하더라도 프레잉을 깍아 먹거나 렌더링이 오래 걸리게 되는 요소가 되기도 합니다.

그렇다 하더라도 당신이 한모델에서 여러가지 형태의 재질이 포함이 된 하나의 모델 파일을 원한다면 클러스터 지정이 그 답이 될것입니다.

  • 원하는 만큼의 폴리곤을 선택을 한뒤에 단축키 CTRL+L 을 누르면 선택된 폴리곤이 하나의 클러스터로 그룹화 됩니다.
    • 다양한 클러스터를 만들고 원하지 않는다면 해당 클러스터만 지워두면 됩니다.
    • 엔진 에서 조작이 된다면 다양한 스킨 형태의 모델이 단지 게임엔진에서 파일 지정만 바꾸어주거나 하는 형태로 다른 팀 모델로 보여지게 됩니다.
    • 폴리곤 덩어리 하나로 한쪽은 나무, 한쪽은 강철 재질 같은 아수라 백작 같은 표현이 가능합니다.
  • TIP Preference - 설정에서 "reload externally modified images on focus" 로 설정해 놓으면 Alt + tab 을 할 때마다 소프트 이미지에서 텍스쳐 파일을 다시 불러들이게 됩니다. 포토샵으로 작업을 할시에 아주 편리한 기능이죠.

Compiling your.VTF : Valve Texture Format

Any Texture that has been mapped to a model (before exporting your.SMD from XSI) must be converted from a TGA to a VTF file before it can be used in the Source Engine. The VTF filename must remain the same as the TGA used to compiling your.SMD (eg: your.TGA -> your.VTF) and the VTF placed in the game_directory/materials/models folder.

  • SourceSDK/bin includes Vtex.exe, the application used to compile to .VTFs. The simplest way to use Vtex is to create a shortcut to vtex.exe on your desktop, and drag .TGA files onto the shortcut. This will create a .VTF file with the same name as your .TGA file in the materials directory. When you drag open a tga file with Vtex, a .TXT file is also created in the same directory as your .TGA, in this file you can issue commands to Vtex to alter your compression.
Note.png Note: For quick material creation, try adding "-shader VertexLitGeneric" to your target field in the Vtex shortcut properties. this works with any shadertype. Dragging a texture on to this modified shortcut will then create a .VTF file as usual, and create a .VMT file with the shader and basetexture defined for you.
  • Cannonfodder's StudioCompiler provides a more user-friendly GUI to Vtex (and Studiomdl). It is able to compile/decompile VTF, VMT and MDL files from/to TGA and SMD files.

Compiling your.VMT : Valve Material Type

Each Material for the Source engine is defined by a .VMT file. It specifies the lighting model, the basetexture (VTF), and any other additional channels you may have like: specularity, self-illumination, normalmap, transparency, translucency, and proxy shaders.

For models, your.VMT must be written by hand (using notepad, etc) and placed in the game_directory/materials/models folder so that your.MDL can find it. The $basetexture (your.VTF) referenced in your.VMT must also be in the same game_directory/materials/models folder so that your.VMT can find it.

Tip.png Tip: The QC command $cdmaterials can be used to specify further subfolders.
Warning.png Warning: All materials for models must use the VertexLitGeneric shader. Model Materials will not work properly with LightmappedGeneric or UnlitGeneric.

Here’s an example VMT file from HL2:

"VertexLitGeneric"
{
     "$basetexture" "Models/Combine_soldier/Combine_elite"
     "$bumpmap" "models/combine_soldier/combine_elite_normal"
     "$envmap" "env_cubemap"
     "$normalmapalphaenvmapmask" 1
     "$envmapcontrast" 1
     "$model" 1
     "$selfillum" 1
}

This example is a material used on a polygonal model, using the VertexLitGeneric shader. The $basetexture or diffusemap is specified as "Models/Combine_soldier/Combine_elite" The $bumpmap or normalmap is imported from "models/combine_soldier/combine_elite_normal". The $envmap or environmentmap is set to "env_cubemap", which refers to cubemap entities placed in the level; the specular reflections of this character will always reflect the world around it - assuming you have cubemap entities placed appropriately in you level. You can use a custom cubemap instead, if you choose. The next line, "$normalmapalphaenvmapmask" 1 tells the renderer that this material has a mask for the specularity, so only some areas of the model will reflect the env_cubemap information, as defined in this case by the alpha channel of the normal map, the specular mask can be here, in the alpha of the basetexture "$basealphaenvmapmask 1" or in a separate mask file "$envmapmask" "models/modelname/mymask". The "$envmapcontrast" 1 command means the brightness of the envmap reflections is multiplied by itself one time; to create brighter highlights and deeper shadows. All models need to contain the command, "$model" 1 which tells the renderer that this material is being used on a polygonal model compiled by Studiomdl.exe. The last line "$selfillum" 1 tells the renderer that the alpha channel of the $basetexture contains self illuminated areas, these areas of the alpha channel show up as glowing areas of the model.

Alpha-channel

To get materials with alpha-channel to work, you have to insert the command "$translucent" 1 to your VMT file. Sometimes this leads to rendering errors in the model (e.g. theres convex 1 in the back of convex 2, but convex 2 gets hidden by convex 1 => Rendering error). If this happens, using the command "$alphatest" 1 instead of "$translucent" 1 should fix it.

Proxy shaders

A powerful component of the source engine material system is the Proxy shader system. Examples of what proxy shaders are capable of are shown in the shaderzoo map contained in the sdk, and further documentation on their creation can be found in the materials documents.