• DirectX9:应用篇 论OBJ模型文件格式


    一.OBJ文件简介

    obj文件不包含面的颜色定义信息,可以引用材质库存储在一个.mtl的文件中(mtllib 材质库),材质库包含了材质的漫射(diffuse) 环境(ambient)  光泽(specular)  反射(specularity)  折射(refraction)  透明度(transparency)等

    obj文件包含UV数据,但不包含材质特性及路径等,不包含动画 例子和动力学信息

    obj3.0格式支持多边形(Polygon) 直线(Lines)  表面(Surfaces)和自由形态曲线(Free-form Curves)

    二.OBJ文件基本结构

    1.顶点数据(Vertex data):

    • v 几何体顶点(Geometric vertices)
    • vt 贴图坐标点(Vertex normals)
    • vp 参数空格顶点(Parameter space vertices)

    2.自由形态曲线(Free-form curve)/表面属性(surface attributes):

    • deg 度(Degree)
    • bmat 基本矩阵(Basis matrix)
    • step 步尺寸(Step size)
    • cstype 曲线或表面类型(Curve or surface type)

    3.元素

    • p 点(Point)
    • l 线(Line)
    • f 面(Face)
    • curv 曲线(Curve)
    • curv2 2D曲线(2D curve)
    • surf 表面(Surface)

    4.自由形态曲线(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)

    5.自由形态表面之间的(Connectivity between free-form surfaces):

    • con 连接(Connect)

    6.成组(Grouping):

    • g 组名称(Group name)
    • s 光滑组(Smoothing group)
    • mg 合并组(Merging group)
    • o 对象名称(Object name)

    7.显示(Dispaly)/渲染属性(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)

    三.OBJ文件实例

    下面obj文件是一个长方体,包含了基本信息(不含贴图)

    # object Box01  代表注释信息

    v  -36.2848 0.0000 7.8963  代表顶点坐标
    vn 0.0000 -1.0000 -0.0000  代表顶点法线坐标

    vt 1.0000 0.0000 0.0000  代表贴图坐标

    g Box01 代表组

    s 2  代表光滑组

    f 1/1/1 2/2/1 3/3/1 4/4/1  表示面 顶点索引 贴图(uv)索引 法线索引

    # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
    # 创建的文件:21.05.2019 11:16:45
     
    #
    # object Box01
    #
     
    v  -36.2848 0.0000 7.8963
    v  -36.2848 0.0000 -26.2606
    v  24.2100 0.0000 -26.2606
    v  24.2100 0.0000 7.8963
    v  -36.2848 26.3326 7.8963
    v  24.2100 26.3326 7.8963
    v  24.2100 26.3326 -26.2606
    v  -36.2848 26.3326 -26.2606
    # 8 vertices
     
    vn 0.0000 -1.0000 -0.0000
    vn 0.0000 1.0000 -0.0000
    vn 0.0000 0.0000 1.0000
    vn 1.0000 0.0000 -0.0000
    vn 0.0000 0.0000 -1.0000
    vn -1.0000 0.0000 -0.0000
    # 6 vertex normals
     
    vt 1.0000 0.0000 0.0000
    vt 1.0000 1.0000 0.0000
    vt 0.0000 1.0000 0.0000
    vt 0.0000 0.0000 0.0000
    # 4 texture coords
     
    g Box01
    s 2
    f 1/1/1 2/2/1 3/3/1 4/4/1 
    s 4
    f 5/4/2 6/1/2 7/2/2 8/3/2 
    s 8
    f 1/4/3 4/1/3 6/2/3 5/3/3 
    s 16
    f 4/4/4 3/1/4 7/2/4 6/3/4 
    s 32
    f 3/4/5 2/1/5 8/2/5 7/3/5 
    s 64
    f 2/4/6 1/1/6 5/2/6 8/3/6 
    # 6 polygons
     
    
  • 相关阅读:
    随便 构思 一个 计算 解析积分 的 简单 的 数学软件
    为什么要 拿 光 的 干涉条纹 宽度 变化 作为 判断 光速 变化 的 依据 ?
    相对论 的 几个问题
    设计 逻辑电路 的 开关元件 (2)
    设计 逻辑电路 的 开关元件
    用 逻辑电路 实现一个 开平方 算法
    小梦 在 民科吧 发了一个 用 四则运算 开平方 的 帖
    物理学 的 基本原理
    和 小梦 探讨 一个 经典力学 问题
    二分法 比 跨越步进法 快
  • 原文地址:https://www.cnblogs.com/k5bg/p/11130546.html
Copyright © 2020-2023  润新知