1、基本形状包括:
o3djs.primitives.createCylinder(pack, material, 1, 2, 30, 30) //半径为1高度为2的圆柱体
o3djs.primitives.createCube(pack,material,1); // 一个单位的正六面体
o3djs.primitives.createSphere(pack, material, 1, 30, 30) // 一个单位的球体
o3djs.primitives.createPlane(pack, material, 1, 1, 20, 20)//创建一个四边形平面
o3djs.primitives.createPrism(pack,material,polygon,1); //创建一个多边形,Z轴深度为1,polygon 顶点数组
createRainbowCube(pack, material, 1);彩色六面体
2、基础的几何形状包括:
POINTLIST, 离散的点
LINELIST, 离散的线
LINESTRIP, 连续的线
TRIANGLELIST, 离散的三角面
TRIANGLESTRIP, 带状三角面
TRIANGLEFAN 扇形三角面
3、形状的数据组成
顶点数据有下列组成:
POSITION, 顶点位置坐标
TEXTURE, 顶点纹理坐标
COLOR, 顶点颜色坐标
NORMAL, 顶点法线向量
TANGENT,顶点切线向量
BINORMAL,顶点次法线向量
indexBuffer ,面得顶点索引
其中,法线是为进行光照计算使用,纹理坐标是为纹理贴图使用,如果你不使用纹理,就要给每个顶点设置颜色。
4、如何创建一个几何形状
1)设置几何形状的顶点坐标、法线向量、颜色、纹理坐标等数据数组,其中顶点数据必须,其他可选。
2)设置面得数据索引数组。确定哪三个顶点组成一个三角面。
3)创建形状对象、图元对象、数据流对象,将对象关联到图元对象。
4)设置图元对象的基础几何形状类型、顶点数量、面得数量。
5)创建数据缓存对象,包括顶点数据缓存、法线数据缓存、纹理数据缓存、颜色数据缓存。根据第一步设置的数据确定;并设置数据格式,包括(float,float2,floa3)等;将数据数组加入到数据缓存中。
6)将数据缓存中的数据加入到数据流中。
7)将面的索引数组加入到图元对象的所有数据缓存中。
var positionArray = [-0.5, -0.5, 0.5, // 顶点0
0.5, -0.5, 0.5, // 顶点1
-0.5, 0.5, 0.5, // 顶点2
0.5, 0.5, 0.5, // 顶点3
-0.5, 0.5, -0.5, // 顶点4
0.5, 0.5, -0.5, // 顶点5
-0.5, -0.5, -0.5, // 顶点6
0.5, -0.5, -0.5 // 顶点7
];
var indicesArray = [
0, 1, 2, // 面1 每个面包含两个三角面
2, 1, 3,
2, 3, 4, // 面2
4, 3, 5,
4, 5, 6, // 面3
6, 5, 7,
6, 7, 0, // 面4
0, 7, 1,
1, 7, 3, // 面5
3, 7, 5,
6, 0, 4, // 面6
4, 0, 2 ];
var cubeShape = g_pack.createObject('Shape'); //创建几何形状对象
var cubePrimitive = g_pack.createObject('Primitive');//创建图元对象
var streamBank = g_pack.createObject('StreamBank');//创建流数据对象
cubePrimitive.material = material;//关联材质对象
cubePrimitive.owner = cubeShape;//关联形状对象
cubePrimitive.streamBank = streamBank;//关联流数据对象
cubePrimitive.primitiveType = g_o3d.Primitive.TRIANGLELIST;//几何形体的类型是离散三角型
cubePrimitive.numberPrimitives = 12;//12个三角面
cubePrimitive.numberVertices = 8; //8个顶点
var positionsBuffer = g_pack.createObject('VertexBuffer'); //创建顶点缓存对象
var positionsField = positionsBuffer.createField('FloatField', 3); //设置顶点缓存数据格式
positionsBuffer.set(positionArray); //将顶点数据加入到顶点缓存中
var indexBuffer = g_pack.createObject('IndexBuffer'); //创建索引缓存
indexBuffer.set(indicesArray);//将索引数据加入到索引缓存中
streamBank.setVertexStream(g_o3d.Stream.POSITION,0,positionsField,0);//设置数据流
cubePrimitive.indexBuffer = indexBuffer; //关联索引缓存对象
分享到:
相关推荐
实现O3D的布局,拖动、旋转(FireFox)
o3d是Google开发的基于web的3d编程API,因文件太大分三次上传
google开发的web3d编程APT o3d.提供的各种3d效果例子,因文件太大,分三个包传上
3D-o3d.zip,objective-3d视频游戏引擎,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。
o3d lib1 graph javascript ajax
关键字文档说明,含中文翻译~ 由于翻译由自己制作,因此可能比较简陋, 但是表明了O3D的整个架构体系,值得一眼~
o3d goolge javascript texture graph
NULL 博文链接:https://xml.iteye.com/blog/531459
O3D 实例 这是我自己的实例,嘿嘿,好像研究的还可以
网页 3D技术,谷歌O3D只适用于,chrome跟IE8
o3d是Google开发的基于web的3d编程API,因文件太大分三次上传
CaO-Al2O3-B2O3-5%SiO2四元相图研究,刘辰生,束奇峰,B2O3对降低保护渣熔点具有显著的作用,四元基础渣系CaO-Al2O3-B2O3-SiO2的研究对新型高铝钢保护渣和无氟保护渣具有重意义。本文结合Factsag
根据分子和离子共存理论,建立了CaO-Al2O3 和CaO-SiO2-Al2O3 渣系的活度计算模型,并利用模型对渣中各组元的活度进行了计算,分析了 w (CaO )对渣中组元活度的影响.结果表明,在 CaO-Al2O3 渣系中,当w(CaO)小于45%时,...
关于野村综研推广的大型机COBOL O3W架构的相关内部资料
稀土氧化物掺杂SrO-CaO-Al2O3-SiO2-B2O3系统封接玻璃的研究,沈阳,李橙,本论文通过淬火的工艺制备了分别掺杂稀土氧化物CeO2和Pr2O3的SrO-CaO-Al2O3-SiO2-B2O3系统封接玻璃。通过差热分析确定两组玻璃的特征温度,...
CaO-Al2O3-B2O3-BaO四元系无氟连铸保护渣结构的探究,王志峰,束奇峰,探究了CaO-Al2O3-B2O3-BaO四元系无氟连铸保护渣的结构特征。研究得出了随着BaO含量的增加,渣中平均桥氧数增加,铝酸盐网络结构聚合度升
首先采用化学镀铜工艺制备了Cu包覆纳米Al2O3复合粉体,分析了预处理工艺和化学镀工艺对复合粉体的组成及形貌的影响;再将均匀包覆的复合粉体与铜粉充分混合后,利用热压烧结成型工艺制备了纳米Al2O3弥散强化铜基复合...
A low binding energy component in the Al 2p core peak spectra was observed and attributed to the formation of a LiAlxCo1−xO2 solid solution interphase for both Al2O3- and AlPO4-coated LiCoO2. The ...
o3d-webgl-pool 来自废弃 o3d 引擎开发者的 3D 台球游戏演示
Al2O3对激光熔覆Ni基涂层性能的影响,况军,徐艳菊,本实验研究了在Ni60合金粉末中添加Al2O3粉末,采用预置涂层法,在45钢基材表面进行激光熔覆,得到Al2O3/Ni金属陶瓷涂层。研究了加入Al2O3