o3d 初级demos

view plaincopy to clipboardprint?
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>O3D Example</title>

<mce:script type="text/javascript" src="o3djs/base.js" mce_src="o3djs/base.js"></mce:script>
<mce:script type="text/javascript"><!--
//o3d js
// --></mce:script>

</head>
<body>
<h1>O3D Example</h1>
<!-- Start of O3D plugin -->
<div id="o3d" style="width: 600px; height: 600px;"></div>
<!-- End of O3D plugin -->
</body>
</html>
一个复杂的3D应用包含场景、摄像机、3D几何体、灯管和材质等。

o3djs.require('o3djs.util');
o3djs.require('o3djs.rendergraph');
o3djs.require('o3djs.primitives');
o3djs.require('o3djs.camera');
o3djs.require('o3djs.material');

//O3D程序的入口点
var g_client;
//3D视窗
var g_viewInfo;
//旋转角度
var g_animate_angle=0;

window.onload = function(){
o3djs.util.makeClients(initialize);
}

function initialize(clientElements) {
var o3d = clientElements[0];

//初始化程序入口client
g_client = o3d.client;

// 创建场景容器
var pack = g_client.createPack();

// 创建视窗
g_viewInfo = o3djs.rendergraph.createBasicView(
pack,g_client.root,g_client.renderGraphRoot);

// 创建材质
var material = o3djs.material.createBasicMaterial(
pack,g_viewInfo, [1, 0, 0, 1]);

// 创建一个正方体
var cube = o3djs.primitives.createCube(pack, material, 0.5);

// 创建3D物体的容器
var transform = pack.createObject('Transform');
transform.parent = g_client.root;
transform.addShape(cube);

// 初始化Camera
o3djs.camera.fitContextToScene(g_client.root,
g_client.width,
g_client.height,
g_viewInfo.drawContext);
//添加帧循环回调函数
g_client.setRenderCallback(onRender);
}

/**
* 帧循环回调函数
*/
function onRender(event){
//取得帧间隔时间
var elapsedTime = event.elapsedTime;
g_animate_angle += 0.1 * elapsedTime;

// camera的位置
var eye = [ Math.sin(g_animate_angle) * 1.0,
1.0,
Math.cos(g_animate_angle) * 1.0];

// camera的指向
var target = [0, 0, 0];

//告诉camera哪个方向是向上,本例中是y轴指向。
var up = [0, 1, 0];

//更新camera的位置
g_viewInfo.drawContext.view = o3djs.math.matrix4.lookAt(eye, target, up);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值