精华内容
下载资源
问答
  • svn 文件后面显示时间和提交人

    千次阅读 2016-03-08 17:31:52
    1.eclipse中选择window-->preferences,然后选择下图中的位置,就可以显示你想要的东西的了,此记下以备后用

    1.在eclipse中选择window-->preferences,然后选择下图中的位置,就可以显示你想要的东西的了,在此记下以备后用


    展开全文
  • 报文格式-PCAP文件格式详解

    千次阅读 2019-12-17 20:06:13
    分析pcap文件格式wireshark中显示了pcap文件头的一些信息

    本章介绍一下网络通信数据包常用的文件存储格式.pcap文件,有助于理解实际的通信数据存储格式。

    即使对于已经使用过wireshark这款软件的同学,很多人其实并不是特别清楚pcap报文格式以及wireshark中所提供frame层的含义,相信通过这章可以让你get到这些新的知识点。

    Wireshark默认的存储方式是pcap格式,最新版本的wireshark默认存储方式是pcapng。ng是next generation 的缩写,pcap和pcapng格式文件有是存在一定的差异。由于pcap格式文件非常的常见,同时理解了.pcap文件之后其实也非常的容易理解pcapng文件,因此为了兼顾老版本,本章就先介绍一下.pcap文件格式。文件格式总的来说其实都有固定的一种模式,使用文件头来表征具体的文件类型,通常是TLV结构,就是type,length,value缩写。 type就是告诉解码器文件的类型, length就是告诉解码器文件内容长度,value就是具体的内容数据。

    图1即pcap报文文件结构示意图:
    在这里插入图片描述
    图1

    • 1、Global Header是整个文件的文件头,包含文件格式标识,pcap格式版本号等文件指示信息。
    • 2、Packet Header是每一片数据报文的头部信息,这些信息都是在形成pcap 报文的过程中由抓包软件wireshark添加的额外信息,例如报文捕获时间等。
    • 3、Packet Data是抓取通信过程中的实际数据,包括协议数据和内容数据。

    在wireshark源码中Global Header结构体包含如下各字段:

    typedef struct pcap_hdr_s {
            guint32 magic_number;   /* magic number */
            guint16 version_major;  /* major version number */
            guint16 version_minor;  /* minor version number */
            gint32  thiszone;       /* GMT to local correction */
            guint32 sigfigs;        /* accuracy of timestamps */
            guint32 snaplen;        /* max length of captured packets, in octets */
            guint32 network;        /* data link type */
    } pcap_hdr_t;
    

    Global Header中各个字段的含义如下:

    • 1、magic_number 作用有两个,一个是pcap文件标识,另一个是系统字节序的表示。因此存在两个值,即0xa1b2c3d4和0xd4c3b2a1。0xa1b2c3d4表示大端序的系统,0xd4c3b2a1表示小端序的系统。
    • 2、version_major和version_minor分别使用2个字节表示大小版本号,即pcap格式版本,当前版本为2.4。(ps:这里指的是pcap文件格式版本而不是wireshark软件版本)
    • 3、Packet Header中的时戳信息是按照本机系统的时区记录的时间的。由于全世界各地的时区并不一致,为了统一,使用thiszone表示本地时区和标准UTC的差值,单位为秒,默认值为0。举个例子来说,通常wireshark在Time那一列显示的默认都是本地的时间,因为wireshark中默认的配置如图2:
      在这里插入图片描述
      图2
      通过选中Time->右键->编辑列,红框中Absolute表示的就是本地的时区。如果选择的是UTC开头的,你会看到显示的时间是和本地时间相差8个小时的,因为我们使用北京时间是在东八区,具体计算的依据就是根据thiszone这个字段。(PS:在实际的过程中我发现该字段通常为0,即按照UTC时间记录,但是Packet Header中的时间却是本地时间,和其定义存在矛盾,不知是否是wireshark的bug)
    • 4、sigfigs是Packet Header中的时戳信息的精度,长度为4个字节,通常默认为0。
    • 5、snaplen为4个字节的最大长度,描述的是允许捕获的每一片数据报文的最大长度,一般默认 ffff 0000,即65535个字节。对于像TCP/IP协议族来说,由于MTU通常限制在1500左右,因此默认的设置肯定是满足日常使用的,当然这个长度是可以在wireshark中设置。
    • 6、network为4个字节的链路类型,例如常见的以太网的值为1。已知的链路层类型包括288种,详见这里

    我以一个在x86 windows上捕获的具体的报文为例,对上述的各字段作进一步的解释。下述的码流为使用HxD 16进制文件编辑器打开文件的第一片报文部分数据(需要注意的是,如果使用nodepadd++打开,在中文操作系统,ANSI其对应编码方式应该是gbk。查看的时候,会显示前两个汉字为“悦病”,则是因为悦在gbk编码中值为Oxd4c3,而病为0xb2a1,后续的则是很多乱码,因为其对码流进行了解码。因此我这里面使用HxD这种16进制编辑器):

    d4c3 b2a1 0200 0400 0000 0000 0000 0000
    0000 0400 0100 0000 deb4 d25a 78e6 0800
    ff00 0000 ff00 0000 fcd7 33ec 414a 446d
    57bb 14a1 0800 4500 00f1 20e2 4000 8006
    423e c0a8 0072 b461 216b ced2 01bb 5e7a
    21d5 6546 e5be 5018 40b0 c8f6 0000 1603
    0100 c401 0000 c003 0389 0bb6 3b80 f388
    3965 716e b3d9 c374 258d 6ce3 ca20 6748
    68dc d4d0 25e3 f3b2 1e00 001c 8a8a c02b
    c02f c02c c030 cca9 cca8 c013 c014 009c
    009d 002f 0035 000a 0100 007b baba 0000
    ff01 0001 0000 0000 1200 1000 000d 7777
    

    可以看到magic_number 为0xd4c3b2a1,表示这是小端序系统中的pcap报文,后面所有的数据都要使用小端序解码。因此version_major和version_minor分别为0002,0004(注意字节序)。thiszone,sigfigs均是0000 0000,表示按照标准的GMT进行记录时间。snaplen为0004 0000,表示单片数据报文最大捕获长度为2^19 -1。network为0000 0001,表示以太网。

    在wireshark源码中Packet Header结构体包含如下各字段:

    typedef struct pcaprec_hdr_s {
            guint32 ts_sec;         /* timestamp seconds */
            guint32 ts_usec;        /* timestamp microseconds */
            guint32 incl_len;       /* number of octets of packet saved in file */
            guint32 orig_len;       /* actual length of packet */
    } pcaprec_hdr_t;
    

    Packet Header中各个字段的含义如下:

    • ts_sec和ts_usec分别使用4个字节表示捕获时间戳的秒数和毫秒数。
    • incl_len使用4个字节表示该软件实际捕获的报文长度。
    • orig_len使用4个字节表示原始报文长度,由于受到Global Header中snaplen的限制,实际的incl_len可能会小于orig_len。

    还是以上述使用HxD软件打开的报文数据为例,Packet Header之后便是第一片报文的Packet Header部分。按照小端序ts_sec和ts_usec分别为5ad2 b4de 以及0008 e678,转换后的时间为Apr 15, 2018 10:11:42.583288000。incl_len和orig_len按照小端序为为0000 00ff,即长度为255个字节。剩下的便是Packet Data内容了。

    对于Global Header以及Packet Header中的信息,wireshark在解析显示报文数据的时候为每一片报文额外加上了一个frame层进行显示,上述报文数据在wireshark中显示如图3:
    在这里插入图片描述
    图3
    从图3中可以看出该层所提供的信息包括两类,一类是没有中括号的,这类信息表示的是,从pcap数据报文本身能够提取的一些信息。

    • 1、Encapsulation type: Ethernet (1)表示以太网的链路类型,即Global Header的network的内容。
    • 2、 Arrival Time Apr 15, 2018 10:11:42.583288000以及Epoch Time: 1523758302.583288000 seconds表示获取报文的时间,只是两种不同的时间格式。这些时间信息是从Packet Header的ts_sec和ts_usec字段获取的。
    • 3、Frame Length: 255 bytes (2040 bits)表示数据的长度,也就是从Packet Header的orig_len字段得到的长度,和后面的Capture Length长度略有不同。
    • 4、Capture Length: 255 bytes (2040 bits)表示在网卡上所捕获的实际数据长度,即Packet Header的incl_len字段。通常情况下Frame Length和Capture Length 是相同的,但是如果Capture Length所捕获的数据有长度限制,则Capture Length要比Frame Length要小一些。

    另外一类是带有中括号的,这类信息表示的是根据报文整体的分析所给出的辅助性信息。像[Protocols in frame: eth:ethertype:ip:tcp:ssl]这种就是根据报文后续解码分析所得到的协议信息,pcap文件本身并不含有这些字段信息。

    frame虽然不是网络协议的一部分,但是wireshark却像各个协议一样为frame层提供了显示过滤器,供筛选报文之用(对齐IP层,TCP层,HTTP层的数据),如图4:
    在这里插入图片描述
    图4

    相信通过上述的介绍应该可以对frame 层所提供的信息以及pcap文件格式有了新的认识。

    本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里

    展开全文
  • .obj文件格式与.mtl文件格式

    万次阅读 多人点赞 2015-07-07 17:55:23
    最近学习obj文件格式,上网查了些资料,很难找到比较全面的文章,尤其是对.mtl文件的说明甚少。今天把最近搜索的资料整合了一下。这里的obj文件格式指的是Wavefront公司为它的一套基于工作站的3D建模和动画软件...
    最近在学习obj文件格式,上网查了些资料,很难找到比较全面的文章,尤其是对.mtl文件的说明甚少。今天把最近搜索的资料整合了一下。


    常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序;第二种是Alias|Wavefront公司推出的OBJ模型文件。本文对第二种obj模型文件进行分析。

    3D文件格式,常见的有几种 "*.3ds","*.max","*.lw","*.mb","*.dxf","*.obj"。但是,OBJ文件的具体特征,却很少有人能给出较为圆满的描述。很多人认识OBJ文件是从使用Poser开始的,Poser是一款人体建模软件,要把Poser生成的人体导出到其它3D软件中进行再加工,就用到了OBJ文件。OBJ文件是一种标准的3D模型文件格式,很适合用于3D软件模型之间的互导。比如在3dsMax或LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过很多软件需要通过插件才能做到这一点。 
    另外,作为一种优秀的文件格式,很多游戏引擎也都支持OBJ文件的读取。 3D软件模型之间的互导是一件很常见的事情,不幸的是,目前的3D软件模型导出功能都不那么完美,经常会出现缺面少线的情况,有时还会遇到导出的模型根本打不开的情况。

    OBJ文件是一种文本文件格式,比起二进制文件为主、连每个块的用途也得试探来试探去的3DS,文本文件为主的OBJ对我们更友好。与3DS文件的树状[块结构]不同,OBJ文件只是很单纯的字典状结构,没有块ID来表征名字而是简单地用易懂的表意字符来表示。总之看上去是赏心悦目的样子,而苦处也就只有实际写导入代码的时候才知道了- -。OBJ文件优化了存储但劣化了读写。

    如果Maya自身的模型出错,也可以先转成OBJ格式,修改之后再导回Maya。

    OBJ文件 -- 概念

    OBJ文件是Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种文件格式,这种格式同样也以通过Maya读写。

    OBJ文件是一种文本文件,可以直接用写字板打开进行查看和编辑修改。

    另外,有一种与此相关二进制文件格式(使用".MOD"后缀),二进制格式作为专利未公开,因此在这里我们不作讨论。

    OBJ最近的有文档的版本是v3.0,代替以前的v2.11版本。

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

    直线和多角形通过它们的点来描述,曲线和表面则根据于它们的控制点和依附于曲线类型的额外信息来定义。这些信息支持规则和不规则的曲线,包括那些基于贝塞尔(Bezier)曲线,B样条(B-spline),基数(Cardinal/Catmull-Rom样条),和泰勒方程(Taylor equations)的曲线。

    1、OBJ文件 -- 特点

    (1)OBJ是一种3D模型文件,因此不包含动画、材质特性、贴图路径、动力学、粒子等信息。

    (2)OBJ文件主要支持多边形(Polygons)模型。

    虽然OBJ文件也支持曲线(Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息。

    (3)OBJ文件支持三个点以上的面,这一点很有用。

    很多其它的模型文件格式只支持三个点的面,所以我们导入Maya的模型经常被三角化了,这对于我们对模型的再加工甚为不利。

    (4)OBJ文件支持法线和贴图坐标。

    在其它软件中调整好贴图后,贴图坐标信息可以存入OBJ文件中,这样文件导入Maya后只需指定一下贴图文件路径就行了,不需要再调整贴图坐标了。



    这里的obj文件格式指的是Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种文件格式。
    OBJ文件是一种标准的3D模型文件格式,很适合用于3D软件模型之间的互导。OBJ文件是一种文本文件格式,这就意味着你可以直接用写字板打开进行查看修改。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过很多软件需要通过插件才能 做到这一点。另外,作为一种优秀的文件格式,很多游戏引擎也都支持OBJ文件。
    OBJ3.0格式支持多边形(Polygon),直线(Lines),表面(Surfaces),和自由形态曲线(Free-form Curves)。直线和多角形通过它们的点来描述,曲线和表面则根据于它们的控制点和依附于曲线类型的额外信息来定义。这些信息支持规则和不规则的曲线,包括那些基于贝塞尔 (Bezier)曲线,B样条(B-spline),基数(Cardinal/Catmull-Rom样条),和泰勒方程(Taylor equations)的曲线。 

    OBJ文件特点 
      -1- OBJ是一种3D模型文件,因此不包含动画、材质特性、贴图路径、动力学、粒子等信息。 
      -2- OBJ文件主要支持多边形(Polygons)模型。 
    虽然OBJ文件也支持曲线(Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息。 
      -3- OBJ文件支持三个点以上的面,这一点很有用。 
    很多其它的模型文件格式只支持三个点的面,所以我们导入Maya的模型经常被三角化了,这对于我们对模型的再加工甚为不利。     
           -4- OBJ文件支持法线和贴图坐标。 

    OBJ文件基本结构
    OBJ文件不需要任何种文件头(File Header),尽管经常使用几行文件信息的注释作为文件的开头。OBJ 文件由一行行文本组成,注释行以一个“井”号(#)为开头,空格和空行可以随意加到文件中以增加文件的可读性。有字的行都由一两个标记字母也就是关键字 (Keyword)开头,关键字可以说明这一行是什么样的数据。多行可以逻辑地连接在一起表示一行,方法是在每一行最后添加一个连接符(\)。注意连接符(\)后面不能出现空格或tab格,否则将导致文件出错。 
     
    下列关键字可以在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) 

    ***************************************************************************************************************
    Maya导出的OBJ文件:
      在Maya中创建一个多边形立方体,选中这个立方体,导出格式为OBJ,文件名为"cube.obj".(如果没有此格式,请在Plug-in Manager中载入"objExport.mll") 用写字板打开"cube.obj"。
    可以看到如下代码: 

      # 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.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 
      vn -1.000000 0.000000 0.000000 
      s off 
      g 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 
      这个文件看起来稍复杂一些,用到了许多关键词,你可以对照前面的列表查看一下每个关键词的意思。
      解释一下:
      "vt 1.000000 0.000000"这句"vt"代表点的贴图坐标。 
      "vn 0.000000 0.000000 -1.000000"这句"vn"代表点的法线。 
      "s off"表示关闭光滑组。 
      "usemtl initialShadingGroup"表示使用的材质。 
      "f 7/13/21"这时在面的数据中多了贴图坐标uv点和法线的索引号,索引号分别用左斜线(/)隔开。 
      格式:"f 顶点索引/uv点索引/法线索引"。 
      "g pCube1"表示组,这里的成组与Maya中的成组不一样,这里的成组是指把"g pCube1"后出现的面都结合到一起,组成一个整的多边形几何体。 
      把"cube.obj"文件修改一下就知道成组的意思了。把"s off"这句后面的代码替换成以下代码: 
      usemtl initialShadingGroup 
      g pCube_Face1 
      f 1/1/1 2/2/2 4/4/3 3/3/4 
      g pCube_Face2 
      f 3/3/5 4/4/6 6/6/7 5/5/8 
      g pCube_Face3 
      f 5/5/9 6/6/10 8/8/11 7/7/12 
      g pCube_Face4 
      f 7/7/13 8/8/14 2/10/15 1/9/16 
      g pCube_Face5 
      f 2/2/17 8/11/18 6/12/19 4/4/20 
      g pCube_Face6 
      f 7/13/21 1/1/22 3/3/23 5/14/24 
      导入Maya后可以看到,立方体的每个面是分离的,每个面的名称分别是"pCube_Face(1~6)",可见组的名称其实就是单独几何体的名称。
    *******************************************************************************************************************
    用中文命名几何体(组)并不总是顺利,把"g 立方体面1"这行改为"g 选择"再试试看,这回导入时模型根本无法出现,只会出现如下的错误信息: 
      // Error: line 1: Your OBJ file contains a line which is too long to be parsed. Please edit your obj file. //
      // Error: line 1: Error reading file. // 
    由此可见,物体命名的不规范也是导致OBJ文件出错的原因之一。关于Maya的物体命名,英文名是很保险的,标点符号中只有下划线(_)可用,数字不能用放到名称的开头,尽量不要用中、日、韩等双字节文字。

    OBJ文件 -- 实例: 
      下面通过实例来具体讲解。 
      OBJ文件记录一个四边形的代码: 
      v -0.58 0.84 0 
      v 2.68 1.17 0 
      v 2.84 -2.03 0 
      v -1.92 -2.89 0 
      f 1 2 3 4

    让我们来创建一个OBJ文件,不过这一回我们不用3D软件,而是用写字板来创建。 
      打开写字板,把上面的5行代码写上去,可以适当加一点注释。 
      保存文件为文本格式,文件名为"myObj.obj",。

    注意:代码最后一定要按一下回车把光标切换到下一行,就是说加一个换行符(\n)。否则会看到如下错误信息: 
      // Error: line 1: OBJ file line 5: index out of range. // 
      // Error: line 1: Error reading file. //

      在Maya中导入"myObj.obj"文件,看见了吧,导入了一个四边形。这个四边形的形状是完全由前面的那5行代码决定的。

                

     下面我们来分析一个这些代码。 

      v -0.58 0.84 0 
      画一个四边形需要四个顶点,这是第一个顶点,"v"表示顶点(vertex),"-0.58"为这个顶点的X轴坐标值,"-0.84"为Y轴坐标值,"0"为Z轴坐标值。这是第一个顶点,它的索引号是1。索引号是画面时要用到的。 
      v 2.68 1.17 0 
      v 2.84 -2.03 0 
      v -1.92 -2.89 0 
      这分别是第二、三、四个顶点,它们的索引号分别是2,3,4。

     现在开始画面,"f"表示面(face),1,2,3,4是前面那四个顶点的索引号。请注意画这个面连接点的顺序,是从第一个点出发,依次连接第二、三、四个点。如果连接的顺序不同所生成的面也会截然不同,例如"f 1 2 4 3"会产生一个交迭的面,如图。 面的连接点是按顺时针排列或逆时针排列,将决定面的法线方向(面的反正)。 例如:"f 1 2 3 4"面的法线向外,"f 4 3 2 1"面的法线向里。 面的连接点顺序错误,是导致导入模型产生碎面的一个重要原因。

    一个面不能出现两个以上相同的顶点,这也是检查OBJ文件出错的一个要点。

    例如:"f 1 2 3 4 3",有两个相同的顶点,索引号是3。一个面出现两个相同顶点,可能造成程序的内存分配错误。




    OBJ文件不支持有孔的多边形面。举个例子: 
      选择 Maya的创建多边形工具(Polygons -> Create Polyon Tool),在视图中画一个四边形,不要按回车,按Ctrl在四边形中间点一下,可以继续在四边形中挖一个洞。把这个有孔的多边形存成OBJ格式,在导入 Maya时,会发现多边形少了一块。如果你把这也看成错误,现在至少你已经知道错误的原因了,就是OBJ文件不支持有孔的多边形面。

    ********************************************************************************************************************
    OBJ文件不包含面的颜色定义信息,不过可以引用材质库材质库信息储存在一个后缀是".mtl"的独立文件中。关键字"mtllib"即材质库的意思。 
      材质库中包含材质的漫射(diffuse),环境(ambient),光泽(specular)的RGB(红绿蓝)的定义值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征。 
      "usemtl"指定了材质之后,以后的面都是使用这一材质,直到遇到下一个"usemtl"来指定新的材质。 
      下面的例子说明了指定材质的方法。 
      Cube with Materials: 
      # This cube has a different material 
      # applied to each of its faces. 
      mtllib master.mtl 
      v 0.000000 2.000000 2.000000 
      v 0.000000 0.000000 2.000000 
      v 2.000000 0.000000 2.000000 
      v 2.000000 2.000000 2.000000 
      v 0.000000 2.000000 0.000000 
      v 0.000000 0.000000 0.000000 
      v 2.000000 0.000000 0.000000 
      v 2.000000 2.000000 0.000000 
      # 8 vertices 
      g front 
      usemtl red 
      f 1 2 3 4 
      g back 
      usemtl blue 
      f 8 7 6 5 
      g right 
      usemtl green 
      f 4 3 7 8 
      g top 
      usemtl gold 
      f 5 1 4 8 
      g left 
      usemtl orange 
      f 5 6 2 1 
      g bottom 
      usemtl purple 
      f 2 6 7 3 
      # 6 elements 
    ********************************************************************************************************************
    贝塞尔片面(Bezier Patch): 
      Maya不能导出OBJ格式的贝塞尔片面,却能够导入它。导入的贝塞尔片面自动转换为Nurbs表面。 
      # 3.0 Bezier patch 
      v -5.000000 -5.000000 0.000000 
      v -5.000000 -1.666667 0.000000 
      v -5.000000 1.666667 0.000000 
      v -5.000000 5.000000 0.000000 
      v -1.666667 -5.000000 0.000000 
      v -1.666667 -1.666667 0.000000 
      v -1.666667 1.666667 0.000000 
      v -1.666667 5.000000 0.000000 
      v 1.666667 -5.000000 0.000000 
      v 1.666667 -1.666667 0.000000 
      v 1.666667 1.666667 0.000000 
      v 1.666667 5.000000 0.000000 
      v 5.000000 -5.000000 0.000000 
      v 5.000000 -1.666667 0.000000 
      v 5.000000 1.666667 0.000000 
      v 5.000000 5.000000 0.000000 
      # 16 vertices 
      cstype bezier 
      deg 3 3 
      # Example of line continuation 
      surf 0.000000 1.000000 0.000000 1.000000 13 14 \ 
      15 16 9 10 11 12 5 6 7 8 1 2 3 4 
      parm u 0.000000 1.000000 
      parm v 0.000000 1.000000 
      end  
      # 1 element 
    ***************************************************************************************************************
    基数曲线(Cardinal Curve): 
      Maya好像不支持OBJ格式的曲线,导入时不会出现错误信息,却也不会出现曲线。 
      # 3.0 Cardinal curve 
      v 0.940000 1.340000 0.000000 
      v -0.670000 0.820000 0.000000 
      v -0.770000 -0.940000 0.000000 
      v 1.030000 -1.350000 0.000000 
      v 3.070000 -1.310000 0.000000 
      # 6 vertices 
      cstype cardinal 
      deg 3 
      curv 0.000000 3.000000 1 2 3 4 5 6 
      parm u 0.000000 1.000000 2.000000 3.000000 end 
      # 1 element 
    ******************************************************************************************************************
    贴图映射(Texture-Mapped): 
      # A 2 x 2 square mapped with a 1 x 1 square 
      # texture stretched to fit the square exactly. 
      mtllib master.mtl 
      v 0.000000 2.000000 0.000000 
      v 0.000000 0.000000 0.000000 
      v 2.000000 0.000000 0.000000 
      v 2.000000 2.000000 0.000000 
      vt 0.000000 1.000000 0.000000 
      vt 0.000000 0.000000 0.000000 
      vt 1.000000 0.000000 0.000000 
      vt 1.000000 1.000000 0.000000 
      # 4 vertices 
      usemtl wood 
      # The first number is the point, 
      # then the slash, 
      # and the second is the texture point 
      f 1/1 2/2 3/3 4/4 
      # 1 element 
    ***********************************************************************************************************
    说下顶点索引吧。
    我们知道,对于每一个三角形,都需要用3个顶点来表示。例如在上面的立方体模型中,一共有6×2×3=36个顶点。仔细想想就会知道, 在这36个顶点中,又相当数量的顶点是重合的。如果把这些重合的顶点都一一表示出来,就太浪费存储空间了。于是,我们提出了顶点索引的想法,解决空间占用 问题。顶点索引的思想是建立两个数组,一个数组用于存储模型中所有的顶点坐标值,另一个数组则存储每一个表面所对应的三个顶点在第一个数组中的索引。建立这样的顶点索引显然更加节约存储空间。
    假设Indices:array of Integer是顶点索引数组,Vertices:array of TVertex是顶点数组,使用下面的代码段就可以把整个顶点索引对应的所有三角形绘制出来:
    procedure DrawIndex(Indices:array of Integer;Vertices:array of TVertex);
    var i :Integer;
    begin
       glBegin(GL_TRIANGLES);
       for i := 0 to (High(Vertices)+1) div 3 -1 do
       begin
         glVertex3fv(@Vertices[Indices[i*3]]);
         glVertex3fv(@Vertices[Indices[i*3+1]]);
         glVertex3fv(@Vertices[Indices[i*3+2]]);
       end;
       glEnd;
    end;
    以此类推,我们可以为模型中所有的法线、纹理坐标都建立起相应的索引,以节省更多的空间。而事实上,OBJ文件就是这么做的。

    在一个OBJ文件中,首先有一些以v、vt或vn前缀开头的行指定了所有的顶点、纹理坐标、法线的坐标。然后再由 一些以f开头的行指定每一个三角形所对应的顶点、纹理坐标和法线的索引。在顶点、纹理坐标和法线的索引之间,使用符号“/”隔开的。一个f行可以以下面几 种格式出现:
    f  1 2 3
        这样的行表示以第1、2、3号顶点组成一个三角形。
    f  1/3 2/5 3/4
        这样的行表示以第1、2、3号顶点组成一个三角形,其中第一个顶点的纹理坐标的索引值为3,第二个顶点的纹理坐标的索引值为5,第三个顶点的纹理坐标的索引值为4。
    f  1/3/4 2/5/6 3/4/2 
        这样的行表示以第1、2、3号顶点组成一个三角形,其中第一个顶点的纹理坐标的索引值为3,其法线的索引值是4;第二个顶点的纹理坐标的索引值为5,其法线的索引值是6;第三个顶点的纹理坐标的索引值为6,其法线的索引值是2。
    f  1//4 2//6 3//2 
    这样的行表示以第1、2、3号顶点组成一个三角形,且忽略纹理坐标。其中第一个顶点的法线的索引值是4;第二个顶点的法线的索引值是6;第三个顶点的法线的索引值是2。
    值得注意的是文件中的索引值是以1作为起点的,这一点与Delphi中以0作为起点有很大的不同。在渲染的时候应注意将从文件中读取的坐标值减去1。

    *****************************************************************************************************************
    最后说说.mtl文件

    三维模型处理会要读取.mtl文件来获得材质信息。

       .mtl文件(Material Library File)是材质库文件,描述的是物体的材质信息,ASCII存储,任何文本编辑器可以将其打开和编辑。一个.mtl文件可以包含一个或多个材质定义,对于每个材质都有其颜色,纹理和反射贴图的描述,应用于物体的表面和顶点。
    以下是一个材质库文件的基本结构:
    newmtl mymtl_1
       材质颜色光照定义
       纹理贴图定义
       反射贴图定义
    newmtl mymtl_2
       材质颜色光照定义
       纹理贴图定义
       反射贴图定义
    newmtl mymtl_3
       材质颜色光照定义
       纹理贴图定义
       反射贴图定义
    ……
    注释:每个材质库可含多个材质定义,每个材质都有一个材质名。用newmtl mtlName来定义一个材质。对于每个材质,可定义它的颜色光照纹理反射等描述特征。
    主要的定义格式如下文所示:
    材质颜色光照
    1。环境反射有以下三种描述格式,三者是互斥的,不能同时使用。

    Ka r g b    \\用RGB颜色值来表示,g和b两参数是可选的,如果只指定了r的值,则g和b的值都等于r的值。三个参数一般取值范围为0.0~1.0,在此范围外的值则相应的增加或减少反射率;
    Ka spectral file.rfl factor   \\用一个rfl文件来表示。factor是一个可选参数,表示.rfl文件中值的乘数,默认为1.0;
    Ka xyz x y z   \\用CIEXYZ值来表示,x,y,z是CIEXYZ颜色空间的各分量值。y和z两参数是可选的,如果只指定了x的值,则y和z的值都等于r的值。三个参数一般取值范围为0~1。

    2。漫反射描述的三种格式:
    Kd r g b
    Kd spectral file.rfl factor
    Kd xyz x y z

    3。镜反射描述的三种格式:
    Ks r g b
    Ks spectral file.rfl factor
    Ks xyz x y z

    4。滤光透射率描述的三种格式:
    Tf r g b
    Tf spectral file.rfl factor
    Tf xyz x y z

    5。光照模型描述格式:

    illum illum_#
    指定材质的光照模型。illum后面可接0~10范围内的数字参数。各个参数代表的光照模型如下所示:
    ************************************************************************************************************

    光照模型               属性
     0                   Color on and Ambient off
     1                   Color on and Ambient on
     2                   Highlight on
     3                   Reflection on and Ray trace on
     4                   Transparency: Glass on
                         Reflection: Ray trace on
     5                   Reflection: Fresnel on and Ray trace on
     6                   Transparency: Refraction on
                         Reflection: Fresnel off and Ray trace on
     7                   Transparency: Refraction on
                         Reflection: Fresnel on and Ray trace on
     8                   Reflection on and Ray trace off
     9                   Transparency: Glass on
                         Reflection: Ray trace off
     10                  Casts shadows onto invisible surfaces

    **************************************************************************************************************

    6。渐隐指数描述

    d factor
    参数factor表示物体融入背景的数量,取值范围为0.0~1.0,取值为1.0表示完全不透明,取值为0.0时表示完全透明。当新创建一个物体时,该值默认为1.0,即无渐隐效果。
    与真正的透明物体材质不一样,这个渐隐效果是不依赖于物体的厚度或是否具有光谱特性。该渐隐效果对所有光照模型都有效。

    d -halo factor
    指定一种受观察者影响的渐隐效果。例如,对于一个定义为 d -halo 0.0的球体,在它的中心是完全消隐的,而在表面边界处将逐渐变得不透明。
    其中factor表示应用在材质上的渐隐率的最小值。而材质上具体的渐隐率将在这个最小值到1.0之间取值。其计算公式为:
    dissolve = 1.0 - (N*v)(1.0-factor)

    7。反射指数描述

    Ns exponent
    指定材质的反射指数,定义了反射高光度。
    exponent是反射指数值,该值越高则高光越密集,一般取值范围在0~1000。

    8。清晰度描述

    Sharpness value
    指定本地反射贴图的清晰度。如果材质中没有本地反射贴图定义,则将此值应用到预览中的全局反射贴图上。
    value可在0~1000中取值,默认60。值越高则越清晰。

    9。折射值描述

    Ni ptical density
    指定材质表面的光密度,即折射值。
    ptical density是光密度值,可在0.001到10之间进行取值。若取值为1.0,光在通过物体的时候不发生弯曲。玻璃的折射率为1.5。取值小于1.0的时候可能会产生奇怪的结果,不推荐。

     
    *************************************************************************************************************
    纹理映射
    纹理映射可以对映射的相应材质参数进行修改,这个修改只是对原有存在的参数进行叠加修改,而不是替换原有参数,从而纹理映射在物体表面的表现上有很好的灵活性。
    纹理映射只可以改变以下材质参数:
    - Ka (color)
    - Kd (color)
    - Ks (color)
    - Ns (scalar)
    - d (scalar)
    除了以上参数,表面法线也可以更改。
    纹理文件类型可以是以下几种:
    1.纹理映射文件
    .mpc:颜色纹理文件color texture files ——可改变Ka,Kd,Ks的值
    .mps:标量纹理文件scalar texture files——可改变Ns,d,decal的值
    .mpb:凹凸纹理文件bump texture files——可改变面法线
    2.程序纹理文件:
    程序纹理文件是用数学公式来计算纹理的样本值。有以下几种格式:
    .cxc
    .cxs
    .cxb

    以下是mtl文件中对于纹理映射的描述格式:
    1.map_Ka -options args filename
    为环境反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc),或是一个位图文件。在渲染的时候,Ka的值将再乘上map_Ka的值。
    而map_Ka的可选项参数有以下几个:
    -blendu on | off
    -blendv on | off
    -cc on | off
    -clamp on | off
    -mm base gain
    -o u v w
    -s u v w
    -t u v w
    -texres value

    2.map_Kd -options args filename
    为漫反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc),或是一个位图文件。作用原理与可选参数与map_Ka同。

    3.map_Ks -options args filename
    为镜反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc),或是一个位图文件。作用原理与可选参数与map_Ka同。

    4.map_Ns -options args filename
    为镜面反射指定标量纹理文件(.mps或.cxs)。可选参数如下所示:
    -blendu on | off
    -blendv on | off
    -clamp on | off
    -imfchan r | g | b | m | l | z
    -mm base gain
    -o u v w
    -s u v w
    -t u v w
    -texres value

    5.map_d -options args filename
    为消隐指数指定标量纹理文件(.mps或.cxs)。作用原理和可选参数与map_Ns同。

    6.map_aat on
    打开纹理反走样功能。

    7.decal -options args filename
    指定一个标量纹理文件或程序纹理文件用于选择性地将材质的颜色替换为纹理的颜色。可选参数同map_Ns。
    在渲染期间, Ka, Kd, and Ks和map_Ka, map_Kd, map_Ks的值通过下面这个公式来进行使用:
    result_color=tex_color(tv)*decal(tv)+mtl_color*(1.0-decal(tv))
    其中tv表示纹理顶点,result_color是Ka,Kd和Ks的综合作用值。

    8.disp -options args filename
    指定一个标量纹理文件或程序纹理文件实现物体变形或产生表面粗糙。可选参数同map_Ns。

    9.bump -options args filename
    为材质指定凹凸纹理文件(.mpb或.cxb),或是一个位图文件。
    可选参数可为:
    -bm mult
    -clamp on | off
    -blendu on | off
    -blendv on | off
    -imfchan r | g | b | m | l | z
    -mm base gain
    -o u v w
    -s u v w
    -t u v w
    -texres value

    ******************************************************************************************************
    反射贴图
    在.mtl文件中的定义格式为:
    1.refl -type sphere -options -args filename
    指定一个球体区域将指定的纹理反射映射至物体。filename为一个颜色纹理文件,或可以映射的位图。

    2.refl -type cube_side -options -args filenames
    指定一个立方体区域将指定的纹理反射映射至物体。可以通过以下方式来指定纹理位置:
     refl -type cube_top
     refl -type cube_bottom
     refl -type cube_front
     refl -type cube_back
     refl -type cube_left
     refl -type cube_right

    “refl”可以单独使用,或配合以下参数使用。使用时将参数置于“refl”和“filename”之间。
     -blendu on | off
     -blendv on | off
     -cc on | off
     -clamp on | off
     -mm base gain
     -o u v w
     -s u v w
     -t u v w
     -texres value
    展开全文
  • Linux指令:od示例用法:od -c ...语法:od [选项] 文件…命令中各选项的含义:- A 指定地址基数,包括:d 十进制o 八进制(系统默认值)x 十六进制n 不打印位移值- t 指定数据的显示格式,主要的参数有:c ASCII字

    Linux指令:od

    示例用法:od -c hello

    Linux指令:od

    od命令
    用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。

    语法:od [选项] 文件…
    命令中各选项的含义:
    - A 指定地址基数,包括:
    d 十进制
    o 八进制(系统默认值)
    x 十六进制
    n 不打印位移值
    - t 指定数据的显示格式,主要的参数有:
    c ASCII字符或反斜杠序列
    d 有符号十进制数
    f 浮点数
    o 八进制(系统默认值为02)
    u 无符号十进制数
    x 十六进制数
    除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。

    说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal
    Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。

    例如:

    1. $ od - Ax - tcx1 wh5  
    2. 000000 F i l e s y s t e m  
    3. 46 69 6c 65 73 79 73 74 65 6d 20 20 20 20 20 20  
    4. 000010 1 k - b l o c k s  
    5. 20 20 20 20 20 31 6b 2d 62 6c 6f 63 6b 73 20 20  
    6. 000020 U s e d A v a i l a b  
    7. 20 20 20 20 55 73 65 64 20 41 76 61 69 6c 61 62  
    8. 000030 l e U s e % M o u n t e d  
    9. 6c 65 20 55 73 65 25 20 4d 6f 75 6e 74 65 64 20  
    10.  
    11. ---- My test -----  
    12. ysun@linetcps1dev:~> cat a  
    13. hello,world.  
    14. Joey.  
    1. ysun@linetcps1dev:~> od -Ax -tcx4 a  
    2. 000000 h e l l o , w o r l d . \n \t J o  
    3. 6c6c6568 6f772c6f 2e646c72 6f4a090a  
    4. 000010 e y . \n \n \0 \0 \0  
    5. 0a2e7965 0000000a  
    6. 000015 

    od 和 hexdump
    实用程序 od 和 hexdump 分别输出文件或流的八进制、十六进制或其他编码的字节。它们对于访问或可视地检查文件中不能直接显示在终端上的字符很有用。

    HERE 文档
    有一种特殊的重定向值得在本教程中提一下。虽然严格地讲,HERE 文档是诸如 bash 这样的 shell
    的特性,而不是与文本实用程序有关的任何东西,但是它们提供了向文本实用程序发送特殊数据的有用途径。
    双小于号重定向可用于从终端接收伪文件的内容。HERE 文档必须紧跟在 << 后面指定一个终止分隔符。
    如:

    1. $ od -c <<END 
    2. > Alice  
    3. > Bob  
    4. > END  
    5. 0000000 A l i c e \n B o b \n  
    6. 0000012 

    任何字符串都可以用作分隔符;输入将在一行上遇到该字符串本身的地方终止。这样为我们提供了创建持久性文件的快捷方法:

    1. $ cat myfile <<EOF 
    2. > Dave  
    3. > Edna  
    4. > EOF  
    5. $ hexdump -C myfile  
    6. 00000000 44 61 76 65 0a 45 64 6e 61 0a |Dave.Edna.|  
    7. 0000000a
    展开全文
  • linux显示文件命令

    万次阅读 2018-05-22 10:47:51
    ls -F-F参数将显示列表中的文件区分开文件和文件夹,文件夹后面带有/ls -a-a参数是显示隐藏文件作用,默认情况下ls命令是不会显示隐藏文件的,隐藏文件显示时候前面带有"."ls -R-R命令将递归显示文件下...
  • DXF文件格式——DXF 格式

    万次阅读 2018-02-06 00:55:48
    DXF™ 格式是 AutoCAD® 图形文件中包含的所有信息的一种带标记数据的表示方式。带标记数据是指文件中的每个数据元素前面都带有一个称为组码的整数。组码的值表明了随后的数据元素的类型。还指出了数据元素对于给定...
  • zip文件格式

    万次阅读 2018-10-16 21:18:24
    用HxD打开,在文件末尾发现50 4B 05 06,这是zip文件的标志,而且文件里有nvshen.jpg 改后缀名为zip,打不开显示文件损坏。 0X 3B是gif尾标记。 后面是zip包,但是我们没有看到pk头,因此我们修改6C 6F 76 65...
  • HEX文件格式详解

    千次阅读 2016-09-06 17:14:26
    Hex文件是可以烧录到MCU中,被MCU执行的一种文件格式。如果用记事本打开可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。Hex文件可以按照如下的方式进行拆分来分析其中的...
  • PLY格式文件详解

    万次阅读 2015-06-28 18:43:10
    链接:... ... 一、PLY简介 ... PLY文件格式是Stanford大学开发的一套三维mesh模型数据格式,图形学领域内很多著名的模型数据,比如Stanford的三维扫描数据库(其中包
  • PNG文件格式详解

    万次阅读 2016-05-20 09:29:15
    PNG文件结构分析(上:了解PNG文件存储格式)   前言 我们都知道,进行J2ME的手机应用程序开发的时候,图片的使用上,我们可以使用PNG格式的图片(甚至于有的手机上,我们只可以使用PNG格式的图片),...
  • linux中查看文件显示行号

    万次阅读 2018-12-19 17:29:29
    linux中查看文件显示行号   [root@1-min etc]# cat -n rsyslog.conf //显示所有行号(包括空行) [root@1-min etc]# cat -b rsyslog.conf //显示所有行号(但不包括空行) 或者: [root@1-min etc]# nl -ba ...
  • 然而有些人的文件后面并没有后缀名,只有单独的文件名称,这样会很不方便。 下面是设置使你的文件显示后缀名的方法: 打开 我的电脑 ,点击 查看 菜单中的 选项,弹出 文件夹选项 ,将 隐藏已知文件类型的扩展名 ...
  • Linux下文件格式及换行符问题

    千次阅读 2019-12-04 11:23:22
    1. 场景描述: 在windows 下写好的文件 f23.txt,上传到Linux环境中运行的时候结果总出问题。而相同内容的在Linux中的文件 f,txt 运行则OK。 ...结果显示在windows写好的文件的最后一行没有换...
  • ELF文件格式解析

    万次阅读 多人点赞 2019-07-03 18:23:56
    1. ELF文件简介 首先,你需要知道的是所谓对象文件...后面的链接器(link editor)拿一个或一些 Relocatable object files 作为输入,经链接处理后,生成一个可执行的对象文件 (Executable file) 或者一个可被共享的对...
  • 最近工作中遇到一个问题,想某个文件的指定位置后面添加一个标志位,要求shell脚本里实现。问题说明:想sys_config.fex文本的某个字符串后面添加一个flag例如:sys_config.fex里有这么一段[nand_para]nand_use...
  • AVI文件格式

    万次阅读 2004-04-16 10:09:00
    小知识:AVI文件格式----摘自《DirectShow实务精选》 作者:陆其明 AVI(Audio Video Interleaved的缩写)是一种RIFF(Resource Interchange File Format的缩写)文件格式,多用于音视频捕捉、编辑、回放等应用程序...
  • BMP文件格式

    千次阅读 2006-04-24 16:43:00
    1. 简介位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP位图文件格式显示设备有关,因此把它称为设备相关位图...
  • GIF文件格式详解

    千次阅读 2017-07-26 20:34:33
    GIF文件格式详解 6.2.1 简介 GIF(Graphics Interchange Format)是CompuServe公司开发的图像文件存储格式,1987年开发的GIF文件格式版本号是GIF87a,1989...一个GIF文件由表示图形/图像的数据块、数据子块以及显示图形
  • CSV文件格式

    万次阅读 2016-11-10 10:03:00
    (逗号分隔值文件格式)  编辑 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个...
  • MFC 树形控件CTreeCtrl显示文件路径及文件

    万次阅读 热门讨论 2014-02-13 01:06:37
    在上篇文章中简单讲述了"MFC单文档分割窗口显示图片",但是我想实现的是左边显示图片的路径,右边显示图片的情况,所以这里需要讲述如何使用控件List Control和Tree Control. CListCtrl(列表控件):可以用大图标、小图标...
  • PLY文件格式

    千次阅读 2013-02-21 11:07:13
    原文地址:PLY文件格式作者:土人 本文转自 http://topic.csdn.net/u/20070602/13/1e879838-9133-4d79-ad1f-b5f22c4e2758.html   OpenGL怎么载入Ply格式的3D模型? 1.找到PLY格式的定义 2.用C++的文件流...
  • java导出pdf文件横向显示

    千次阅读 2017-01-06 17:03:02
    今天做项目的时候遇到一个很奇怪的需求,具体就是网页上面有个可供用户下载的pdf文件,由于是表格形式,而且很多列,导致像往常那样竖着显示的话就显得很难看,于是就要求下载到本地的时候横着导出,方便用户查看...
  • BMP文件格式详解

    万次阅读 2018-08-21 15:22:25
    BMP文件格式详解(BMP file format) from : https://blog.csdn.net/o_sun_o/article/details/8351037 BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中...
  • linux下使用“ls -l”或者“ls -al”或者“ll”命令查看文件及目录详情时,shell中会显示出好几列的信息。平时也没怎么注意过,今天忽然心血来潮想了解一下,于是整理了这篇博客,以供参考: 首先给出一张典型的...
  • Scratch 3的作品(sb3格式文件)怎么生成可执行exe文件  Scratch 3.0界面如下:   【新版特征】  与以前2.0版本不同,Scratch3.0版本使用H5和JS语言编写,打破了电脑端和移动端的壁垒,有望后期实现...
  • stl文件格式

    千次阅读 2013-05-31 17:11:34
    最近有用到stl格式的三维文件,学习收藏一下。 转自:http://www.cnblogs.com/ourshell/archive/2010/05/03/1726821.html STL只能用来表示封闭的面或者体,stl文件有两种:一种是明码格式,另一种是二进制格式...
  • 如标题提到的问题:修改如下设置,将show tabs in single row勾选去掉->OK
  • 【数字图像处理】一.MFC详解显示BMP格式图片

    万次阅读 多人点赞 2014-01-14 19:31:46
    本文主要是讲述《数字图像处理》...BMP文件格式是Windows操作系统推荐和支持的标准图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,故称位图(bitmap),其扩展名为BMP.BMP图像通常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 981,257
精华内容 392,502
关键字:

怎么在文件后面显示格式