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库包含了一系列的类和方法,如几何体创建、材质应用、光照设置、相机控制等,支持开发者构建丰富的网络3D应用。 2. **3D物体编辑**:O3D 物体编辑器允许用户创建、修改和管理3D模型。用户可以导入现有的3D模型...
总结来说,O3D学习笔记第一部分主要涉及了3DS模型的转换,这是3D开发中常见的需求,因为不同的软件和引擎通常使用不同的文件格式。通过了解3DS格式和O3DTGZ的特性,以及使用适当的工具和库,开发者可以有效地在O3D...
O3D 是一个开源的 JavaScript 库,它允许开发者在 Web 浏览器中创建高性能的三维图形应用。这个实例可能是为了展示 O3D 的基本用法和功能,帮助用户快速入门。下面我们将深入探讨 O3D 的核心概念、主要特性以及 `...
谷歌O3D是一种由Google开发的JavaScript库,用于在Web浏览器中实现高性能的3D图形渲染。这个技术主要目标是让网页开发者能够轻松地在不借助插件的情况下创建丰富的、交互式的3D内容。O3D的核心是基于OpenGL的硬件...
o3d是Google开发的基于web的3d编程API,因文件太大分三次上传
在O3D文档中,我们关注的是3D图形渲染的关键概念和术语,这些内容对于理解O3D框架的架构和工作原理至关重要。以下是对这些关键术语的详细解释: 1. **Draw Context 绘制上下文**:绘制上下文是3D渲染的核心组件,它...
google开发的web3d编程APT o3d.提供的各种3d效果例子,因文件太大,分三个包传上
在3D-o3d.zip这个压缩包中,我们看到的是Objective-3D视频游戏引擎的相关资料,这是一个专门用于3D游戏开发的工具。 Objective-3D游戏引擎,以其强大的功能和灵活性,为开发者提供了构建逼真3D游戏环境的可能性。它...
o3d lib1 graph javascript ajax
o3d goolge javascript texture graph
o3d是Google开发的基于web的3d编程API,因文件太大分三次上传
它简化了WebGL编程,提供了许多便利的类和功能,如几何体、材质、光源、相机等,以及动画和加载3D模型的支持。 2. **o3dv.min.js**:这是 Online3DViewer 自己的JavaScript代码,经过压缩优化,用于在网页中嵌入和...
### 野村综研O3W架构资料:深入解析与技术要点 #### 一、背景与挑战 在1980年代至1990年代初,日本许多企业开始进行核心业务系统的信息化改造,主要采用大型机为核心的专用系统。当时的终端设备主要是哑终端,仅能...
O3D是一款基于WebGL的开源3D图形库,它允许开发者在网页上创建复杂的3D场景和应用。这个库在Googlecode上曾被广泛使用和开发,但在googlecode退役后,该项目被迁移至其他平台以保持其活力。O3D的目标是提供一个高...
根据分子和离子共存理论,建立了CaO-Al2O3 和CaO-SiO2-Al2O3 渣系的活度计算模型,并利用模型对渣中各组元的活度进行了计算,分析了 w (CaO )对渣中组元活度的影响.结果表明,在 CaO-Al2O3 渣系中,当w(CaO)小于45%时,...
纹理扭曲(Texture Distortion)是一种在3D图形和游戏开发中常见的视觉效果,它通过改变对象表面的纹理坐标来创建动态、流动或变形的效果。在Unity中,这通常用于水体、火焰、烟雾等模拟自然现象。O3DE(Open 3D ...
### 材料力学之平面图形几何性质检测题解析 #### 测试卷一解析 **测1.1**:本题考查平面图形的对称性和形心的位置关系。 - **选项A**:“图形的对称轴必定通过形心”。正确。如果一个平面图形存在对称轴,则形心...