obj文件

obj + mtl 格式说明

怎甘沉沦 提交于 2019-11-30 00:20:19
OBJ(或 .OBJ)是一种开放的几何定义文件格式,最初由Wavefront Technologies公司开发,用以描述其Advanced Visualizer动画包。该格式已被其他3D图形应用供应商采纳,是一种被绝大多数普遍公认的格式。 OBJ文件格式为简单数据格式,它仅表现3D几何体,即顶点的位置、以顶点列表方式定义每个多边形的顶点、法向量和面的UV坐标,以及纹理顶点。顶点默认以逆时针方向存储,不必显式声明法向。 1. 文件格式 注释行以#号起首 # 这是注释 一个OBJ文件包含几类定义: # 顶点列表,用(x,y,z[,w])坐标表示,w为可选 v 0.123 0.234 0.345 1.0 v ... ... # 纹理坐标,用(u,v[,w])坐标表示,w为可选 vt 0.500 -1.352 [0.234] vt ... ... # 法向量,用(x,y,z)的形式,法向量非单位向量 vn 0.707 0.000 0.707 vn ... ... # 面的定义详见下 f 1 2 3 f 3/1 4/2 5/3 f 6/4/1 3/5/3 7/6/5 f ... ... 2. 面的定义 面通过顶点列表、纹理及法向的索引来定义。定义多边形(诸如四边形)时可超过三张顶点/纹理/法向索引。OBJ文件也支持自由曲面,如NURB(非均匀有理B样条)。 有多种方式定义一个面

arm9_uboot_Makefile结构分析

若如初见. 提交于 2019-11-29 22:28:00
1.解压缩 tar xjf u-boot-1.1.6.tar.bz2 2.打补丁 patch -p1 < ../u-boot-1.1.6_jz2440.patch 3.配置 make 100ask24x0_config,下面为Makefile MKCONFIG := $(SRCTREE)/mkconfig unconfig:      #清楚配置信息 @rm -f $(obj)include/config.h $(obj)include/config.mk \ $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp 100ask24x0_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0 #上面这段翻译为:mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0 make 100ask24x0_config这个命令执行的就是 mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0这个脚本,下面我们看下mkconfig文件 #!/bin/sh -e # Script to create header files and

obj文件中的关键字

泪湿孤枕 提交于 2019-11-29 21:43:21
obj文件使用的关键字 关键字 含义 v 表示本行指定一个顶点,此关键字后跟着3个单精度浮点数,分别表示该顶点的X、Y、Z坐标值 vt 表示本行指定一个纹理坐标,此关键字后跟着两个单精度浮点数,分别表示此纹理坐标的U、V值 vn 表示本行指定一个法线向量,此关键字后跟着3个单精度浮点数,分别表示该法向量的X、Y、Z坐标值 g 表示组,后面参数为组名称,指定从此行之后到下一个以g开头的行之间的所有元素结合到一起 f 表示本行指定一个表面,一个表面就是一个三角形图元,此关键字后的参数格式后面将详细介绍 usemtl 此关键字后参数为材质名称,指定了从此行之后到下一个以usemtl开头的行之间的所有表面所使用的材质名称,该材质可以在此obj文件所附属的mtl文件中找到具体信息 mtllib 此关键字后参数为文件名称,指定了obj文件所使用的材质库文件(mtl文件)的文件名称 obj文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是".mtl"的独立文件中。mtl文件是obj文件附属的材质库文件,材质库中包含材质的漫射(diffuse),环境(ambient),光泽(specular)的RGB的定义值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征。mtl文件同obj文件一样,也可以用写字板打开

用edoc2实现上传和下载

我们两清 提交于 2019-11-29 09:37:52
import cn.com.dyg.work.common.exception.DefException; import cn.com.dyg.work.common.http.HttpClientRequest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client

常用VBS对象

三世轮回 提交于 2019-11-29 03:37:28
Set Obj_Shell = CreateObject("Wscript.shell") '读写删注册表,打开指定程序 Set Obj_WinHttp = Createobject("WinHttp.WinHttpRequest.5.1")'网页POST,GET Set Obj_DictionAry = CreateObject("Scripting.DictionAry")'字典 Set Obj_FilEsystem = CreateObject("Scripting.FileSystemObject")'文件相关对象,磁盘 Set Obj_Adodb = CreateObject("adodb.stream")'可以用于GET,POST下载网页图片等数据 Set Obj_ScriptControl= CreateObject("MSScriptControl.ScriptControl") '可以运行JAvaScript代码 Set Obj_RegExp = New RegExp ‘正则表达式 ’============================================================================== Obj_Shell.RUn 按WIn+R可以执行的所有功能,短整形运行式样,布尔值等待程序被关闭 运行式样:0

内存对象管理器(基于数组和链表实现)

℡╲_俬逩灬. 提交于 2019-11-29 03:20:25
1.1 数组的特点 连续的内存空间分配并且顺序存储数据,使用之前需要先分配数组个数; 可以通过下标进行访问修改数据,时间复杂度为O(1); 空间效率不是很好,不能随意修改数组大小; 增删数据需要内存拷贝 1.2 链表的特点 内存空间分配是分散的,非连续的存储数据; 不能通过下标直接访问,查找的时间复杂度为O(n); 增删元素,只需要改变前后指针; 1.3 基于数组和指针实现的对象管理器 结合了数组和链表的优点,可以O(1)查找元素,O(1)增删元素; 需要预分配内存; 2.代码实现(C++) /** *@file ObjAllocator *@author jasonxiong *@date 2009-12-09 *@version 1.0 *@brief CObj对象分配类,即新版本的idxobj * * (1)一般用于大型对象的内存分配 */ #ifndef __OBJ_ALLOCATOR_HPP__ #define __OBJ_ALLOCATOR_HPP__ #include <stdio.h> namespace ServerLib { typedef enum enmObjAllocType { EOAT_ALLOC_BY_SELF = 0, //!<对象内存由ObjAllocator自已动态分配 EOAT_ALLOC_BY_SHARED_MEMORY = 1, //!

jQuery2.0.3源码

只谈情不闲聊 提交于 2019-11-28 22:59:53
概览   整体结构 (function (){ (21 , 94) 定义了一些变量和函数 jQuery=function(); (96 , 293) 给jQuery对象添加一些方法和属性; (285 , 347) extend:jQuery扩展方法; (349 , 817) jQuery.extend : 扩展一些工具方法; (877 , 2856 ) Sizzle : 复杂选择器的实现; (2880, 3042 ) Callbacks : 回调对象:函数的统一管理 (3043, 3183 ) Deferred : 延迟对象:对异步的统一管理 (3184, 3295) support : 浏览器功能检测,确定浏览器对某些功能是否支持 (3380, 3652) data() : 数据缓存功能 (3653, 3797) queue()/dequeue() : 队列管理 (3803, 4299) attr() prop() val() addClass()等方法,对元素属性的操作 (4300, 5138) on() trigger()等方法,事件相关的方法,事件管理 (5140,6057) DOM操作:添加 删除 包装 获取 DOM筛选 (6058, 6620) css() : 样式操作 (6621, 7854) 提交的数据和Ajax()操作:ajax() load() getJson(

Java mysql数据库连接Demo1

断了今生、忘了曾经 提交于 2019-11-28 19:02:27
public class MysqlUtil { /** * 链接数据库 */ /** * 方法一: * 加载驱动的方法不止一种,但这种最常用 */ public static Connection getConnectionOne(String database,String username,String password){ try { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+database,username, password); return connection; }catch(Exception e){ e.printStackTrace(); } return null; } /** * 方法二: * 利用properties文件 * ::::: 在Web 编程时 文件难以定位 */ public static Connection getConnectionTwo() { /** * 建立文件 */ Properties pro = new Properties(); InputStream in = MysqlUtil.class

一文了解Python常见的序列化操作

别来无恙 提交于 2019-11-28 17:24:58
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android、Python、Java和Go,这个也是我们团队的主要技术栈。 Github: https://github.com/hylinux1024 微信公众号:终身开发者(angrycode) 0x00 marshal marshal 使用的是与 Python 语言相关但与机器无关的二进制来读写 Python 对象的。这种二进制的格式也跟 Python 语言的版本相关, marshal 序列化的格式对不同的版本的 Python 是不兼容的。 marshal 一般用于 Python 内部对象的序列化。 一般地包括: 基本类型 booleans, integers,floating point numbers,complex numbers 序列集合类型 strings, bytes, bytearray, tuple, list, set, frozenset, dictionary code对象 code object 其它类型 None, Ellipsis, StopIteration marshal 的主要作用是对 Python “编译”的 .pyc 文件读写的支持。这也是 marshal 对 Python 版本不兼容的原因。开发者如果要使用 序列化/反序列化 ,那么应该使用

单例

旧巷老猫 提交于 2019-11-28 15:39:28
什么是单例 单例是指的是单个实例,指一个类只能有一个实例对象 为什么要用单例 当一个类的所有对象属性全部相同时,则没有必要创建多个对象 例如开发一个音乐播放器程序,音乐播放器可以封装为一个对象,那你考虑一下,当你切歌的时候,是重新创建一个播放器,还是使用已有的播放器? 因为播放器中的数据和业务逻辑都是相同的没有必要创建新的,所以最好使用单例模式,以 节省资源 当两个对象的数据完全相同时 则没有必要占用两份资源 一、基于元类 class MymetaClass(type): def __call__(self, *args, **kwargs): if not hasattr(self,'instance'): self.instance = super().__call__(*args,**kwargs) return self.instance class Mysql(metaclass=MymetaClass): def __init__(self,host,port): self.host = host self.port = port obj = Mysql('ajdak',213) obj1 = Mysql('asdasdas',134234) print(id((obj)))print(id((obj1)))print(obj.host,obj.port)print