RTS 게임과 같이 모델의 특정 부분을 채색하는 방법은 팀 색상이 있습니까?


16

RTS 게임에서 볼 수있는 것을 구현해야합니다 : 팀 색상. 기본적으로 모델의 특정 부분을 채색하는 방법을 찾고 있습니다. 어떻게하면 되나요? 어디서부터 시작해야할지 모르겠습니다. 3D 모델을 먼저 조정해야합니까?

답변:


18

이 작업을 수행하는 방법은 단위에 적용 할 텍스처 맵을 기반으로합니다. 대부분의 경우 착색해야 할 영역과 그렇지 않은 영역이 있습니다. 예를 들어 일반 탱크가 있지만 일부 플래그의 색상 만 변경하려고합니다.

색상이있는 영역이 회색조 인 것처럼 텍스처를 페인트하면 알파 채널을 사용하여 색상을 지정할 영역을 지정할 수 있습니다.

따라서 셰이더에서 가장 간단한 방법으로 갈 수 있습니다.

float3 finalColor;
if (colorFromTex.a > 0)
 finalColor = colorFromTex.rgb;
else
 finalColor = colorFromTex.rgb*myTintColor.rgb;

전환이 힘들고 셰이더에 브랜치가 있기 때문에 최적이 아닙니다. 대신가는 것이 좋습니다 :

float3 finalColor = lerp(colorFromTex.rgb, 
    colorFromTex.rgb*myTintColor.rgb, colorFromTex.a);

DirectX 쉐이더를 3ds Max의 3D 모델로 가져 오는 방법을 알고 있습니까? 셰이더 유형으로 재질을 설정하고 셰이더를 ReplaceColor.fx로 설정하고 모델을 내보냈을 때 결과는 다음과 같습니다 Error 1 Missing asset "C:\Users\Kai\AppData\Local\Temp\fbx.shader.temp.1064.2756\ReplaceColor.fx". 나는 그것을 올바르게 얻을 수있는 방법을 이해하지 못합니다.
rFactor

당신이 그것을로드 할 때입니까? FBX의 경로가 임시 폴더를 가리키는 것이 이상하게 보입니다. 그 파일이 존재합니까? 3ds Max에서 FBX 내보내기에 익숙하지 않지만 경로를 상대적으로 만들기 위해 파일을 편집하거나 옵션을 설정해야 할 수도 있습니다.
Lucas

좋은 기술이지만 알파 채널을 사용하여 "색조 가능성"을 나타내는 경우 finalColor에서 알파 구성 요소를 재설정하는 것을 잊지 마십시오.
charstar

3

한 가지 기술은 각 모델에 대해 두 가지 텍스처 세트 (하나는 빨간색, 다른 하나는 파란색)를 갖는 것입니다. 그런 다음 캐릭터가 할당 된 팀에 따라 해당 텍스처 세트를 적용합니다.

분명히 두 팀이있는 경우에만 작동합니다. 두 개 이상 빠져 나갈 수는 있지만 비효율적입니다.

다른 방법은 두 가지 텍스처를 혼합하는 것입니다. 첫 번째는 모델의 기본 텍스처이고 두 번째는 런타임에 생성 할 수있는 컬러 오버레이입니다.

세 번째 방법은 기본 모델의 색상을 변경하고 팀 색상을 표시하려는 모델 부분에 텍스처 (또는 부분적으로 투명한 텍스처)가없는 것입니다.


2

텍스처 알파 채널을 팀 색상에 전용으로 사용하면 DXT 텍스처가 2 배 더 커지므로 크로마 키 를 사용하여 팀 색상을 계산합니다. 텍스처에서 하나의 색상 (예 : 녹색, 파랑, 마젠타)을 "예약 색상"으로 지정하십시오.

엔진이 시동되면 "예약 된 색상"을 팀 색상으로 회전시키는 각 팀 색상에 대한 매트릭스를 만듭니다. 팀 객체를 그리기 직전에이 행렬을 픽셀 셰이더 상수로 설정하십시오.

픽셀 셰이더에서 팀 색상 매트릭스로 픽셀 색상을 변환합니다. 픽셀의 채도 각도에 "예약 된 색"채도에 비례하는 양만큼 변환되지 않은 픽셀 색상을 변환 된 픽셀 색상으로 Lerp합니다.

이로 인해 ALU 명령어가 필요하고 픽셀 셰이더를 다듬어야하지만, 텍스처 캐시가 2 배 큰 텍스처 캐시를 부 풀리는 것보다 훨씬 저렴합니다.

또한 각 색상에 하나의 텍스처 채널을 할당하지 않고도 여러 크로마 키 (예 : 마젠타 및 시안이 기본 및 보조 팀 색상에 매핑 됨)를 가질 수 있습니다.


1

내 기술은 다음과 같습니다 .2 텍스처 : 메인 텍스처 하나, 메인 텍스처 위에 1 초 텍스처. 색칠하려는 부분 만 있습니다. 원하는대로 두 번째 텍스처의 색상을 변경하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.