探索nunustudio 开发3D模型 第六弹:自定义DOM和物体点击事件

前言:在实际开发中经常会在场景中自定义DOM元素或者添加物体点击事件,那栗子来咯!!!

1、搭建基本场景。

场景中没有太多的物体,简单的demo。

2、介绍场景中基本元素,正方体、地面、相机、js标签,这里的js标签放在scene下,可以理解为当前场景的全局的js。

3、在当前场景自定义DOM,这个其实很简单动态创建dom元素,然后追加到window中。

function initialize()
{
	//TODO <INITIALIZATION CODE>
	var div=window.document.createElement('div');
	var style="width:200px;height:30px;color:red;background-color:black;position:absolute;margin-left:20px;margin-top:30px";
	div.setAttribute('style',style);
	div.append('Test');
	window.document.body.append(div);
	
}

简单的自定义DOM追加,就可以在场景中添加元素。

4、为物体添加点击事件,这里先阅读下API

光线投射用于进行鼠标拾取 http://www.webgl3d.cn/threejs/docs/#api/zh/core/Raycaster

鼠标基类  http://nunustudio.org/docs/classes/Mouse.html

5、(重点)在使用光线投射用于进行鼠标拾取的时候,注意一定要添加相机,因为它是一个参照物。

function update(delta)
{
	//TODO <UPDATE CODE>
	//console.log(Mouse.position);
	var intersects = scene.raycaster.intersectObjects(scene.children);
	
	//Intersections list contains object, point of intersection, distance, uv and face
	for(var i = 0; i < intersects.length; i++)
	{
		if(Mouse.buttonJustPressed (Mouse.LEFT))
		{
			
			console.log(intersects[i]);
			return alert(12);
		}
	}
}

在创建工程有几个重要对象(program、scene、this)

program对象:指当前工程对象,通过它可以获取下面所属的所有的子场景以及属性;

scene对象:指一个场景对象,通过它可以获取当前场景所有的子元素;

this对象:获取当前js标签对象,如果标签下面有子元素也可以获取并使用;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值