了解3D、OBJ (入门篇)
2019-01-18 本文已影响35人
Q14
本次分析那个主要介绍3D相关知识
什么是3D? 以及在我们公司主要用了什么?
- 三维空间、三维(3 dimensions) 3D空间的概念也就是由X、Y、Z三个轴组成的空间
- 我们称呼的3D,主要特指是基于电脑、互联网的数字化的3D/三维/立体技术可以称呼为三维数字化技术
- 在我们公司的应用就是手机有深度相机的 根据特征向量生成3D模型 没有深度相机的也就是基于一张图片
建立3D 模型
什么是3D模型? 怎么样才能建一个3D模型
- 三D模型是物体的三维多边形表示,通常用电脑或者其它影片设备进行显示。显示的物体是可以是现实世界的实体,也可以是虚构的东西,既可以小到原子,也可以大到很大的尺寸。任何物理自然界存在的东西都可以用三维模型表示
- 三维模型本身是不可见的,可以根据简单的线框在不同细节层次渲染的或者用不同方法进行明暗描绘(shaded
- 许多三维模型使用纹理进行覆盖,将纹理排列放到三维模型上的过程称作纹理映射。纹理就是一个图像,但是它可以让模型更加细致并且看起来更加真实。例如,一个人的三维模型如果带有皮肤与服装的纹理那么看起来就比简单的单色模型或者是线框模型更加真实。
除了纹理之外, - 其它一些效果也可以用于三维模型以增加真实感。例如可以调整曲面法线以实现它们的照亮效果,一些曲面可以使用凸凹纹理映射方法以及其它一些立体渲染的技巧。
常见的3D 展示格式
- 3D文件格式,常见的有几种 ".3ds",".max",".lw",".mb",".dxf",".obj"等. 其实也就是各个软件导出的3D 格式就不一一介绍了
- 我们见天介绍的重点是OBJ
- 先贴一个obj
顶点数据(Vertex data):v 几何体顶点 (Geometric vertices)vt 贴图坐标点 (Texture vertices)vn 顶点法线 (Vertex normals)vp 参数空格顶点 (Parameter space vertices)自由形态曲线(Free-form curve)/表面属性(surface attributes):deg 度 (Degree)bmat 基础矩阵 (Basis matrix)step 步尺寸 (Step size)cstype 曲线或表面类型 (Curve or surface type)元素(Elements):p 点 (Point)l 线 (Line)f 面 (Face)curv 曲线 (Curve)curv2 2D曲线 (2D curve)surf 表面 (Surface)自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):parm 参数值 (Parameter values )trim 外部修剪循环 (Outer trimming loop)hole 内部整修循环 (Inner trimming loop)scrv 特殊曲线 (Special curve)sp 特殊的点 (Special point)end 结束陈述 (End statement)自由形态表面之间的连接(Connectivity between free-form surfaces):con 连接 (Connect)成组(Grouping):g 组名称 (Group name)s 光滑组 (Smoothing group)mg 合并组 (Merging group)o 对象名称 (Object name)显示(Display)/渲染属性(render attributes):bevel 导角插值 (Bevel interpolation)c_interp 颜色插值 (Color interpolation)d_interp 溶解插值 (Dissolve interpolation)lod 细节层次 (Level of detail)usemtl 材质名称 (Material name)mtllib 材质库 (Material library)shadow_obj 投射阴影 (Shadow casting)trace_obj 光线跟踪 (Ray tracing)ctech 曲线近似技术 (Curve approximation technique)stech 表面近似技术 (Surface approximation technique)
# The units used in this file are centimeters.
g default
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.000000 2.000000
vt 1.000000 2.000000
vt 0.000000 3.000000
vt 1.000000 3.000000
vt 0.000000 4.000000
vt 1.000000 4.000000
vt 2.000000 0.000000
vt 2.000000 1.000000
vt -1.000000 0.000000
vt -1.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 1.000000 0.000000 0.000000v
n 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
s offg
pCube1
usemtl initialShadingGroup
f 1/1/1 2/2/2 4/4/3 3/3/4
f 3/3/5 4/4/6 6/6/7 5/5/8
f 5/5/9 6/6/10 8/8/11 7/7/12
f 7/7/13 8/8/14 2/10/15 1/9/16
f 2/2/17 8/11/18 6/12/19 4/4/20
f 7/13/21 1/1/22 3/3/23 5/14/24
2.下面简介一下关键词
顶点数据(Vertex data):
v 几何体顶点 (Geometric vertices)
vt 贴图坐标点 (Texture vertices)
vn 顶点法线 (Vertex normals)
vp 参数空格顶点 (Parameter space vertices)
自由形态曲线(Free-form curve)/表面属性(surface attributes):
deg 度 (Degree)
bmat 基础矩阵 (Basis matrix)
step 步尺寸 (Step size)
cstype 曲线或表面类型 (Curve or surface type)
元素(Elements):
p 点 (Point)
l 线 (Line)
f 面 (Face)
curv 曲线 (Curve)
curv2 2D曲线 (2D curve)
surf 表面 (Surface)
自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):
parm 参数值 (Parameter values )
trim 外部修剪循环 (Outer trimming loop)
hole 内部整修循环 (Inner trimming loop)
scrv 特殊曲线 (Special curve)
sp 特殊的点 (Special point)
end 结束陈述 (End statement)
自由形态表面之间的连接(Connectivity between free-form surfaces):
con 连接 (Connect)
成组(Grouping):
g 组名称 (Group name)
s 光滑组 (Smoothing group)
mg 合并组 (Merging group)
o 对象名称 (Object name)
显示(Display)/渲染属性(render attributes):
bevel 导角插值 (Bevel interpolation)
c_interp 颜色插值 (Color interpolation)
d_interp 溶解插值 (Dissolve interpolation)
lod 细节层次 (Level of detail)
usemtl 材质名称 (Material name)
mtllib 材质库 (Material library)
shadow_obj 投射阴影 (Shadow casting)
trace_obj 光线跟踪 (Ray tracing)
ctech 曲线近似技术 (Curve approximation technique)
stech 表面近似技术 (Surface approximation technique)
- MTL格式(纹理格式)
# 定义一个名为 'xxx'的材质
newmtl xxx
# 材质的环境光(ambient color)
Ka 0 0 0
# 散射光(diffuse color)用Kd
Kd 0.784314 0.784314 0.784314
# 镜面光(specular color)用Ks
Ks 0 0 0
# 折射值 可在0.001到10之间进行取值。若取值为1.0,光在通过物体的时候不发生弯曲。玻璃的折射率为1.5。
Ni 1
# 反射指数 定义了反射高光度。该值越高则高光越密集,一般取值范围在0~1000。
Ns 400
# 滤光透射率
Tf 1 1 1
# 渐隐指数描述 参数factor表示物体融入背景的数量,取值范围为0.0~1.0,取值为1.0表示完全不透明,取值为0.0时表示完全透明。
d 1
# 为漫反射指定颜色纹理文件
map_Kd test_vt.bmp
- JPG/PNG贴图(UV)
如如何展示在obJ 中有提示
OBJ总结
OBJ文件是一种文本文件格式,比起二进制文件为主、连每个块的用途也得试探来试探去的3DS,文本文件为主的OBJ对我们更友好。与3DS文件的树状[块结构]不同,OBJ文件只是很单纯的字典状结构,没有块ID来表征名字而是简单地用易懂的表意字符来表示。总之看上去是赏心悦目的样子,而苦处也就只有实际写导入代码的时候才知道了- -。OBJ文件优化了存储但劣化了读写。