Wavefront .obj 파일
Wavefront .obj file파일 이름 확장자 | .obj |
---|---|
인터넷 미디어 유형 | 모델/오비지 |
개발자 | Wavefront 테크놀로지 |
포맷의 종류 | 3D 모델 형식 |
OBJ(또는 )OBJ)는 Wavefront Technologies가 Advanced Visualizer 애니메이션 패키지를 위해 처음 개발한 지오메트리 정의 파일 형식입니다.파일 형식은 개방적이며 다른 3D 그래픽 애플리케이션 공급업체에서 채택했습니다.
OBJ 파일 형식은 3D 지오메트리만 나타내는 단순한 데이터 형식입니다. 즉, 각 정점의 위치, 각 텍스처의 UV 위치, 정점 노멀 및 각 폴리곤을 정점 및 텍스처 정점의 목록으로 정의하는 면입니다.정점은 기본적으로 시계 반대 순서로 저장되므로 면 정규성을 명시적으로 선언할 필요가 없습니다.OBJ 좌표에는 단위가 없지만 OBJ 파일에는 인간이 읽을 수 있는 주석 줄에 척도 정보가 포함될 수 있습니다.
파일 형식
해시 문자(#) 뒤에 있는 것은 코멘트입니다.
# 이건 댓글이야
OBJ 파일은 정점 데이터, 자유형 곡선/표면 속성, 요소, 자유형 곡선/표면 본문, 자유형 표면 간의 접속성, 그룹화/렌더 속성 정보를 포함할 수 있다.가장 일반적인 요소는 기하학적 정점, 텍스처 좌표, 정점 법선 및 다각형 면입니다.
# (x, y, z, [w]) 좌표가 있는 기하학적 정점 목록은 옵션이며 기본값은 1.0입니다. v 123 0.345 1.0 v... # 텍스처 좌표 목록(u, [v, w])은 0 ~1 . vt ... 1 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0 . 0니트 벡터vn 0.707 0.000 0.707 vn ... # (u, [v, w]) 형식의 파라미터 공간 꼭지점; 자유 형식 지오메트리 문(아래 참조) vp 0.310000 3.210000 2.100000 vp ... # 다각형 면 요소(아래 참조) f 1 2 3 f/3 f/1/4/5 f/3/3/3/5
기하학적 꼭지점
정점은 문자로 시작하는 선을 통해 지정됩니다.v
그 다음에 (x,y,z[,w]) 좌표가 나옵니다.W는 옵션이며 기본값은 1.0입니다.우측 좌표계는 좌표 위치를 지정하기 위해 사용됩니다.일부 응용 프로그램에서는 빨간색, 녹색 및 파란색 값을 x y 및 z 뒤에 배치하여 정점 색상을 지원합니다(이 경우 w를 지정할 수 없습니다.color 값의 범위는 0 ~1 [2]。
매개변수 공간 정점
자유형 지오메트리 문은 문자열로 시작하는 라인에 지정할 수 있습니다.vp
. 곡선 또는 표면의 매개변수 공간에서 점을 정의합니다. u
곡선 점에만 필요합니다.u
그리고.v
표면점 및 비경사 트리밍 곡선의 제어점에 대해,u
,v
그리고.w
(가중치) 합리적인 트리밍 곡선의 제어점에 대한 것입니다.
면 요소
면은 정점, 텍스처 및 법선 인덱스의 리스트를 사용하여 정의되며, 각 인덱스는 정점_index/texture_index/normal_index 형식으로 시작되며 참조된 요소가 정의된 순서에 따라 증가합니다.4변수와 같은 폴리곤은 3개 이상의 인덱스를 사용하여 정의할 수 있습니다.
또한 OBJ 파일은 곡선과 표면을 사용하여 NURBS 표면과 같은 객체를 정의하는 자유 형식 지오메트리를 지원합니다.
정점 지수
유효한 정점 인덱스는 이전에 정의된 정점 리스트의 대응하는 정점 요소와 일치합니다.인덱스가 양의 경우 1부터 시작하는 해당 정점 리스트의 오프셋을 참조합니다.인덱스가 음수인 경우 정점 리스트의 끝을 상대적으로 참조하고 -1은 마지막 요소를 참조합니다.
각 면에는 3개 이상의 정점이 포함될 수 있습니다.
f v1 v2 v3 ..
정점 텍스처 좌표 색인
선택적으로 텍스처 좌표 인덱스를 사용하여 면을 정의할 때 텍스처 좌표를 지정할 수 있습니다.면을 정의할 때 정점 인덱스에 텍스처 좌표 인덱스를 추가하려면 정점 인덱스 바로 뒤에 슬래시를 넣은 다음 텍스처 좌표 인덱스를 넣어야 합니다.슬래시 전후에는 공백이 허용되지 않습니다.유효한 텍스처 좌표 인덱스는 1부터 시작하여 이전에 정의된 텍스처 좌표 리스트 내의 대응하는 요소와 일치합니다.각 면에는 3개 이상의 요소를 포함할 수 있습니다.
f v1/v1 v2/v2/v3/v3...
정점 정규 지수
선택적으로, 면을 정의할 때 정점에 대한 정규 벡터를 지정하는 데 정규 인덱스를 사용할 수 있습니다.면을 정의할 때 정점 인덱스에 정규 인덱스를 추가하려면 텍스처 좌표 인덱스 뒤에 두 번째 슬래시를 넣은 다음 정규 인덱스를 넣어야 합니다.유효한 정규 인덱스는 1부터 시작하여 이전에 정의된 정규 목록 내의 대응하는 요소와 일치합니다.각 면에는 3개 이상의 요소를 포함할 수 있습니다.
f v1/sq1/vn1 v2/sq2/vn2 v3/sq3/vn3...
텍스처 좌표 인덱스가 없는 정점 정규 지수
텍스처 좌표는 옵션이기 때문에 텍스처 좌표가 없는 지오메트리를 정의할 수 있지만 정규 인덱스를 넣기 전에 정점 인덱스 뒤에 슬래시를 두 개 넣어야 합니다.
f v1//vn1 v2//vn2 v3//vn3...
선요소
문자 "l"(소문자 L)로 시작하는 레코드는 폴리선을 작성하는 정점의 순서를 지정합니다.
l v1 v2 v3 v4 v5 v6...
기타 지오메트리 형식
Obj 파일은 Taylor 및 B-spline과 같은 여러 종류의 보간을 사용하여 고차 서페이스를 지원하지만, 서드파티 파일 리더의 이러한 기능 지원은 보편적이지 않습니다.또한 Obj 파일은 메시 계층 구조나 정점 스키닝이나 메시 모핑과 같은 애니메이션이나 변형도 지원하지 않습니다.
참고 자료
폴리곤의 시각적 측면을 설명하는 자료는 외부 .mtl 파일에 저장됩니다.OBJ 파일 내에서 둘 이상의 외부 MTL 재료 파일을 참조할 수 있습니다..mtl 파일에는 하나 이상의 명명된 재료 정의가 포함될 수 있습니다.
mtllib [파일명 .mtl]...
이 태그는 다음 요소의 재료 이름을 지정합니다.재료 이름은 외부 .mtl 파일의 명명된 재료 정의와 일치합니다.
usemtl [재료명]...
명명된 개체 및 폴리곤 그룹은 다음 태그를 통해 지정됩니다.
o [오브젝트명]...g [그룹명]...
그룹을 평활하면 폴리곤 전체에 걸쳐 부드러운 음영을 사용할 수 있습니다.
s 1 ...# 부드러운 음영도 비활성화할 수 있습니다. 꺼짐...
상대 지수 및 절대 지수
OBJ 파일은 목록 구조로 인해 절대 위치(1은 첫 번째 정의된 정점을 나타내고 N은 N번째 정의된 정점을 나타냄) 또는 상대 위치(-1은 가장 최근에 정의된 정점을 나타냄)에 의해 정점, 규범 등을 참조할 수 있습니다.그러나 모든 소프트웨어가 후자의 접근 방식을 지원하는 것은 아니며, 반대로 일부 소프트웨어는 본질적으로 후자의 형태만 작성하기 때문에(정점 오프셋을 재계산할 필요 없이 요소를 추가하는 등의 편리함 때문에) 때때로 비호환성이 발생합니다.
재료 템플릿 라이브러리
파일 이름 확장자 | .mtl |
---|---|
인터넷 미디어 유형 | 모델/mtl |
매직 넘버 |
|
개발자 | Wavefront 테크놀로지 |
포맷의 종류 | 3D 텍스처 포맷 |
재료 템플릿 라이브러리 형식(MTL) 또는.MTL File Format은 에 부속된 파일 형식입니다.또한 Wavefront Technologies에서 정의되는 OBJ. 하나 이상의 객체 내에 있는 객체의 표면 음영(재료) 특성을 설명합니다.OBJ 파일.OBJ 파일은 1개 또는 여러 개를 참조합니다.MTL 파일("재료 라이브러리"라고 함)은 하나 이상의 재료 설명을 이름으로 참조합니다.MTL 파일은 컴퓨터 렌더링을 위해 퐁 반사 모델에 따라 표면의 빛을 반사하는 특성을 정의하는 ASCII 텍스트입니다.이 표준은 서로 다른 컴퓨터 소프트웨어 패키지 간에 광범위하게 지원되므로 자료 교환에 유용한 형식이 됩니다.
MTL 형식은 여전히 널리 사용되고 있지만 구식이므로 스펙큘러 맵이나 시차 맵 등의 최신 기술을 완전히 지원하지 않습니다.그러나 이 포맷은 개방적이고 직관적이기 때문에 커스텀 MTL 파일 생성기를 사용하여 쉽게 추가할 수 있습니다.
MTL 형식에는 여러 [5][6]형식이 정의되어 있습니다.
기본 재료
싱글.mtl
파일은 여러 재료를 정의할 수 있습니다.재료는 파일 내에서 차례로 정의되며, 각각은newmtl
명령어:
# 'Colored' newmtl Colored라는 이름의 재료를 정의합니다.
재료의 주변 색상은 다음을 사용하여 선언됩니다.Ka
색정의는 RGB로 각 채널의 값이 0과 1 사이입니다.
# 흰색 Ka 1.000 1.000 1.000
마찬가지로 확산 색상은 다음과 같이 선언됩니다.Kd
.
# 흰색 Kd 1.000 1.000 1.000
특정 색상은 다음을 사용하여 선언됩니다.Ks
, 및 경지수를 사용하여 가중치를 부여합니다. Ns
.
# 검정(오프) Ks 0.000 0.000 0.000 # 범위 0 ~1000 Ns 10.000
재료는 투명할 수 있습니다.이를 용해라고 합니다.실제 투명도와 달리 결과는 개체의 두께에 따라 달라지지 않습니다."d"의 경우 1.0이 기본값이고 "Tr"의 경우 0.0과 마찬가지로 완전히 불투명함을 의미합니다.모든 조명 모델에서 용해 작업.
# 일부 구현에서는 'd' d 0.9를 사용하고 다른 구현에서는 'Tr'을 사용합니다(반전:Tr = 1 - d) Tr 0.1
투명 재료는 "Tf"로 지정된 트랜스미션 필터 색상을 추가로 가질 수 있습니다.
# 전송 필터 색상(R G B 사용) Tf 1.0 0.5 0.5 # 전송 필터 색상(CIEXYZ 사용) - y 및 z 값은 옵션이며 스펙트럼 곡선 파일에서 Tf xyz 1.0 0.5 0.5 # 전송 필터 색상(일반적으로 사용되지 않음)이 생략된 경우 x와 같다고 가정합니다.
재료는 표면에 광학 밀도를 가질 수도 있다.이것은 굴절률이라고도 합니다.
광학 밀도 Ni 1.45000
값의 범위는 0.001 ~10 입니다1.0의 값은 빛이 물체를 통과할 때 휘어지지 않는다는 것을 의미합니다.광학 밀도를 높이면 굽힘의 양이 증가합니다.유리의 굴절률은 약 1.5이다.값이 1.0 미만일 경우 이상한 결과가 발생하므로 [7]권장하지 않습니다.
재료당 여러 조명 모델을 사용할 수 있습니다."d" 또는 "Tr"로 투명도를 달성하기 위해 투명 조명 모델을 설정할 필요가 없으며, 현대의 사용법에서는 투명 재료를 사용하더라도 조명 모델을 지정하지 않는 경우가 많다.조명 모델은 다음과 같이 열거됩니다.
0. 색 온 및 환경 오프 1.컬러 온과 앰비언트 온 2셋에 강조 표시.반사 온, 레이 트레이스 온 4투명도: 유리 온, 반사:레이 트레이스 5번반영:플레넬이 켜지고 레이 트레이스가 6번이야투명도: 굴절, 반사:플레넬을 끄고 레이는 7번 도로에서 추적해투명도: 굴절, 반사:플레넬을 켜고 레이는 8번에서 추적해반사 온과 레이 트레이스 오프 9투명도: 유리 온, 반사:광선 추적 10번지보이지 않는 표면에 그림자를 드리웁니다.
조명 2
텍스처 맵
텍스처 재료는 위와 동일한 특성을 사용하며 텍스처 맵을 추가로 정의합니다.다음은 일반적인 재료 파일의 예입니다.자세한 내용은 전체 wavefront 파일 형식 참조를 참조하십시오.
newmtl Textured Ka 1.000 Kd 1.000 Kd 1.000 Ks 0.000 0.000 0.000 d 1.0 조명 2 # 주변 텍스처 맵_Ka lemur.tga # 확산 텍스처 맵(대부분 # 주변 텍스처 맵과 동일)_kd lemurm_ga specificular texture map # texture map # spicular texture map #ture map.ga #ture map #ture map.ga #ture map.gap.ga.ga.cular highlight component map_Ns urmer_spec.tga # the alpha texture map_d urmer_alpha.tga # 일부 구현에서는 map_bump urmer_bump.tga # 범프 맵(기본적으로 이미지의 휘도 채널을 사용) 아래에 있는 'bump' 대신 'mp'를 사용합니다.# 스텐실 스티커 텍스처(이미지의 '스텐실' 채널에 대응) 스티커 leumber_stencil.tga
텍스처 맵스테이트먼트에는 옵션파라미터가 포함되어 있을 수도 있습니다(전체 사양 참조).
# 텍스처 원점(1,1,1) 맵_Ka -o 1 1 embient.tga # 구면 반사 맵 refl -type 구 구름.tga
텍스처 옵션
-boostu on #수평 텍스처 블렌딩 설정(기본값 켜짐) -voost on # 수직 텍스처 블렌딩 설정(기본값 켜짐) -boost float_value # boost mip-map 선명도 -mm base_value gain_value # 텍스처 맵 값 수정(기본값 0 1)# base_value = 밝기, gain_value = 대비 -ou [v [w] # 원점 오프셋(기본값 0 0 0) -su [v [w] # 척도(기본값 1 1) -tu [v] # 난류(기본값 0 0 0) -tex 분해능 # te resolution # te te생성하기 위한 텍스처 해상도 -clamp on #클램프된 0-1 범위(기본값 꺼짐)의 텍스처만 렌더링 # 클램프 해제 시 텍스처가 표면 전체에 반복되고 # 클램프된 경우 0-1 범위 내에 있는 텍스처만 반복됩니다.# 범위가 렌더링됩니다.-bm mult_value #범프 승수(범프 맵 전용) -imfchan r g b m l z #는 스칼라 또는 범프 텍스처 작성에 사용되는 파일의 채널을 지정합니다.r:red, g:green, # b:blue, m:context, l:context, z:z-depth..#(범프의 기본값은 'l', 스티커 기본값은 'm')
예를들면,
#는 범프맵 범프로 bumpmap.tga의 빨간색 채널을 사용하라고 합니다.-imfchan r bumpmap.tga
반사 지도의 경우...
-type sphere #는 "refl" 반사 맵 -type cube_top cube_bottom #의 구를 지정합니다. 큐브 맵을 사용하면 큐브의 각 큐브_프론트 큐브_back # 변에 대한 텍스처 파일이 큐브_left cube_right로 별도로 지정됩니다.
벤더 고유의 변경
파일을 쉽게 해석할 수 있고 파일 형식이 비공식적으로 확산되기 때문에 파일에 벤더 고유의 변경이 포함될 수 있습니다.
사양에 따르면 옵션은 텍스처 파일 이름 앞에 있어야 합니다.그러나 적어도 하나의 공급업체가 마지막에 옵션이 있는 파일을 생성합니다.
0.2 범프 texbump.tga - bm 0.2의 범프 승수
물리 기반 렌더링
온라인 3D 편집 및 모델링 도구인 Clara.io의 제작자는 물리적 기반 렌더링 매개 [8]변수를 나타내기 위해 다음과 같은 매개 변수를 포함하도록 MTL 형식을 확장할 것을 제안했습니다.
Pr/map_Pr # 거칠기 Pm/map_Pm # 금속 Ps/map_Ps # 광택제 Pcr # 투명 코팅 거칠기 Ke/map_Ke # 방사 아니소 # 이방성 회전 노름 # 법선 지도(RGB 성분은 법선 표면의 XYZ 성분을 나타냄)
Microsoft DirectX 엔진용 DirectXMesh 툴킷에서 제안된 추가 확장을 통해 모델의 사전 컴파일된 RMA 자료를 [9]정의할 수 있습니다.
map_RMA # RMA 재료(거칠음, 금속성, 주변 흡장) map_ORM # 맵의 대체 정의_RMA
「 」를 참조해 주세요.
- glTF
- OFF(파일 형식)
- STL(파일 형식)
- PLY(파일 형식)는 대부분의 입체 리소그래피 애플리케이션보다 더 유연한 대체 파일 형식입니다.
레퍼런스
- ^ https://www.iana.org/assignments/media-types/model/obj[베어 URL 플레인텍스트 파일]
- ^ "How can I include vertex color information in .OBJ files?". Game Development Stack Exchange. Retrieved 2014-10-08.
- ^ https://www.iana.org/assignments/media-types/model/mtl[베어 URL 플레인텍스트 파일]
- ^ "Wavefront Material Template Library (MTL) File Format". Library of Congress. 4 October 2019.
- ^ "MTL Files - Material Definitions for OBJ Files". People.sc.fsu.edu. 2004-06-14. Retrieved 2010-11-26.
- ^ "Wavefront .mtl file format info - GRIPES and GRUMBLES - Wings - Wings3D - Official Development Forum - Message Board". Nendowingsmirai.yuku.com. Retrieved 2010-11-26.
- ^ Ramey, Diane (1995). "MTL material format (Lightwave, OBJ)". Alias-Wavefront, Inc. Retrieved May 17, 2020.
- ^ "Exocortex Extending Wavefront MTL for Physically-Based Rendering". exocortex.com.
- ^ "Ability to define RMA texture in OBJ's MTL. by MattFiler · Pull Request #39 · microsoft/DirectXMesh". GitHub.