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;
}

最新文章

  1. Spring中获取数据库表主键序列
  2. JDK1.7 ConcurrentHashMap 源码浅析
  3. js克隆
  4. android4.4短信新概念
  5. css基本属性
  6. delete、update忘加where条件误操作恢复过程演示
  7. PHPstorm 函数时间注释的修改
  8. 【网络流】【BZOJ1061】【NOI2008】志愿者招募
  9. mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法
  10. 零基础自学Python十天,写了一款猜数字小游戏,附源码和软件下载链接!
  11. C++开发中BYTE类型数组转为对应的字符串
  12. esxi 精简置备只增不减问题解决方法(转)
  13. BBS论坛(二)
  14. input 和 button元素 作为提交、重置、按钮功用的区别。
  15. Python中Scrapy框架元素选择器XPath的简单实例
  16. .NET拾忆:EventLog(Windows事件日志监控)
  17. 当父级绑定了DataContext之内的数据源时,子级想重新绑回DataContext
  18. webpack导入es6的简单应用
  19. Java8 对多个异步任务进行流水线操作(笔记)
  20. 疯狂创客圈 JAVA死磕系列 总目录

热门文章

  1. 访问mysql出现Access denied for user &#39;root&#39;@&#39;的解决方法
  2. R语言 一套内容 从入门 到放弃
  3. iOS CATransition 动画的简单使用
  4. 炸金花游戏(3)--基于EV(期望收益)的简单AI模型
  5. git和redmine同步
  6. Mysql update指定区间的数据
  7. django ----视图和路由
  8. angular6实现对象转换数组对象
  9. Elasticsearch2.3.4使用手册(使用存储过程做增量同步的探索)
  10. for循环、while循环、break、continue、exit