1.组合

  创建一个组非常简单,在组中添加子元素的效果是,你可以对组进行移动、缩放和变形,而所有的子对象都会受到影响。使用组的时候,你依然可以引用、修改每一个单独的几何体。但是,使用raycaster射线是无法获取组group,只能获取组中的元素。

var geometry = new THREE.BoxBufferGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); var cubeA = new THREE.Mesh( geometry, material );
cubeA.position.set( 100, 100, 0 ); var cubeB = new THREE.Mesh( geometry, material );
cubeB.position.set( -100, -100, 0 ); //create a group and add the two cubes
//These cubes can now be rotated / scaled etc as a group
var group = new THREE.Group();
group.add( cubeA );
group.add( cubeB ); scene.add( group );

2.合并

  组里的对象还是独立的,需要对它们分别进行处理和渲染。通过合并可以将多个几何体合并起来,创建一个几何体,可以提升性能。最大的缺陷是失去了对单个对象的控制。想要移动、旋转、或者缩放某个方块是不可能的。

  合并后的组可以通过raycaster射线获取合并后的结合体。

//创建建筑
createBuilding:function(obj){
var width = obj.width || 4;//建筑长
var height = obj.height || 1;//建筑高
var depth = obj.depth || 2;//建筑宽
var floor = obj.depth || 5;//楼层数量 var groupGeometry = new THREE.Geometry(); for(var i=0;i<floor;i++){
var geometry = new THREE.BoxGeometry(width, height, depth);
var material = new THREE.MeshLambertMaterial({ color: 0x696969 });
var box = new THREE.Mesh(geometry, material);
box.position.set(0, height*i+height/2+0.02*i, 0); box.updateMatrix();
groupGeometry.merge(box.geometry, box.matrix);
} var group = new THREE.Mesh(groupGeometry, new THREE.MeshLambertMaterial({ color: 0x696969 }))
group.name="movealbe-element-" + new Date().getTime();
return group;
}

three.js的组合与合并,raycaster射线无法获取group的更多相关文章

  1. three.js的raycaster射线无法获取visible为false的网格对象

    在做网格对象拖放时,需要创建一个不可见的参考平面,如果将平面对象设置为visible,则射线对象无法获取该平面,就无法进行位置计算. onDocumentMouseMove: function (e) ...

  2. three.js raycaster射线碰撞的坑 (当canvas大小 不是屏幕大小是解决拾取物体的办法)

    这里只是记录一下坑,方便查阅,内容主要援引自:three.js Raycaster 射线拾取 canvas不占满整屏时射线拾取存在偏差 1. 世界坐标系: 世界坐标系位于屏幕的中心(0,0,0),往右 ...

  3. 使用js 设置组合快捷键

    使用js 设置组合快捷键 使用js设置快捷键的本质就是获得你要设置的这个键的keyCode 的值,如果要加ctrl,alt,shift,那么就添加一个ctrlkey,altKey,shiftKey来判 ...

  4. ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩

    JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...

  5. js或css文件合并的三种方式推荐

    源文档 <http://www.jb51.net/article/32834.htm> 在Web项目的开发中,js,css文件会随着项目的开发变得越来越多,越来越大,这就给给性能方面带来一 ...

  6. js 排列 组合 的一个简单例子

    最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比 ...

  7. php js css加载合并函数 宋正河整理

    <?php //php js css加载合并函数 宋正河整理 //转载请注明出处 define('COMBINE_JS',true); define('COMBINE_CSS',true);   ...

  8. 编写gulpfile.js文件:压缩合并css、js

    使用gulp一共有四个步骤: 1. 全局安装 gulp: $ npm install --global gulp 2. 作为项目的开发依赖(devDependencies)安装: $ npm inst ...

  9. js 可选链 & 空值合并 In Action

    js 可选链 & 空值合并 In Action const obj = { props: { name: 'eric', }, // prop, 不存在的属性 ️ }; console.log ...

随机推荐

  1. C语言---指针变量作为函数参数

    在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着 ...

  2. python安装代码包提示缺少 VC++ 14 控件的处理方式

    下载如下文件,然后安装 http://go.microsoft.com/fwlink/?LinkId=691126

  3. 虚拟机中ubuntu不能联网问题的解决——NAT方式

    困惑我多时的Ubuntu联网问题终于解决啦,开心!!!现记录如下,方便日后取用. 可先直接尝试第3步,若不行,则走完全程. 1.查看/设置下NAT的网络 打开VMware Workstation, 点 ...

  4. java多线程、线程池及Spring配置线程池详解

    1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源.2.java中简单的实现多线程的方式 继承Thread ...

  5. JavaSE-2018.12.20更新

    JDK:Java Development Kit(java开发工具包,是提供给java开发人员使用的,包含了开发工具(编译工具javac.exe和打包工具jar.exe等)+JRE) JRE:Java ...

  6. Springboot,SSM框架比较,区别

    百度搜 Springboot,SSM框架区别,大多说的都是 1.springboot一个应用是一个可执行jar 2.将原有的xml配置,简化为java配置 他们说的确实没错,可是根本没有说到本质,百度 ...

  7. spring3-struts2整合

    spring  负责对象创建 struts   用Action处理请求 说明: spring版本:spring-framework-3.2.5.RELEASE struts版本:struts-2.3. ...

  8. 新学了几个python模块,不是很鸡肋。

    先说一个模块分类(基本上所有模块都是小写开头,虽然规范的写法是变量的命名规范,但是,都是这样写的) 1,C编写并镶嵌到python解释器中的内置模块 2,包好的一组模块的包 3.已经被编译好的共享库, ...

  9. 关于Mysql的主从

    mysql 主从同步异常原因及恢复:   1,auto.cnf 配置问题 这个问题是在部署主从复制的时候,可能会遇到 [1]报错 Last_IO_Error: Fatal error: The sla ...

  10. XML注入(XXE)

    XML所有元素都必须要有一个结束标志 大小写敏感 所有元素嵌套必须正确 所有的XML文档都必须要有一个根标志 XML包括XML声明,DTD文档类型定义(可选),文档元素 DTD即文档类型定义,用来为X ...