【three.js练习程序】旋转物体自身
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>ceshi</title>
- <script type="text/javascript" src=".\build\three.js"></script>
- <style>
- body
- {
- margin: 0;
- overflow: hidden;
- }
- </style>
- </head>
- <body>
- <!-- 作为Three.js渲染器输出元素 -->
- <div id="WebGL-output">
- </div>
- <!-- 第一个 Three.js 样例代码 -->
- <script type="text/javascript">
- var cube = new Array(100);
- var rotx = new Array(100);
- var roty = new Array(100);
- var rotz = new Array(100);
- var camera, scene, renderer;
- var id = null;
- var fov = 45;
- var near = 0.1;
- var far = 1000;
- init();
- function init() {
- scene = new THREE.Scene();
- camera = new THREE.PerspectiveCamera(fov, window.innerWidth / window.innerHeight, near, far);
- camera.position.x = 100;
- camera.position.y = 100;
- camera.position.z = 100;
- camera.lookAt(scene.position);
- //创建一个WebGL渲染器并设置其大小
- renderer = new THREE.WebGLRenderer();
- renderer.setClearColor(new THREE.Color(0x000000));
- renderer.setSize(window.innerWidth, window.innerHeight);
- var axes = new THREE.AxisHelper(200);
- scene.add(axes);
- for (var i = 0; i < 100; i++) {
- var geometry = new THREE.BoxGeometry(5, 5, 5);
- for (var j = 0; j < geometry.faces.length; j += 2) {
- var hex = Math.random() * 0xffffff;
- geometry.faces[j].color.setHex(hex);
- geometry.faces[j + 1].color.setHex(hex);
- }
- rotx[i] = Math.random() * 0.005;
- roty[i] = Math.random() * 0.005;
- rotz[i] = Math.random() * 0.005;
- var material = new THREE.MeshBasicMaterial({ vertexColors: 0xff0000 });
- cube[i] = new THREE.Mesh(geometry, material);
- cube[i].position.x = Math.random() * 100 - 50;
- cube[i].position.y = Math.random() * 100 - 50;
- cube[i].position.z = Math.random() * 100 - 50;
- cube[i].receiveShadow = true;
- scene.add(cube[i]);
- id = setInterval(render, 33);
- }
- document.addEventListener('mousewheel', mousewheel, false);
- }
- function render() {
- for (var i = 0; i < 100; i++)
- {
- cube[i].rotation.x += rotx[i];
- cube[i].rotation.y += roty[i];
- cube[i].rotation.z += rotz[i];
- }
- renderer.render(scene, camera);
- }
- function mousewheel(e) {
- e.preventDefault();
- //e.stopPropagation();
- if (e.wheelDelta) { //判断浏览器IE,谷歌滑轮事件
- if (e.wheelDelta > 0) { //当滑轮向上滚动时
- fov -= (near < fov ? 1 : 0);
- }
- if (e.wheelDelta < 0) { //当滑轮向下滚动时
- fov += (fov < far ? 1 : 0);
- }
- } else if (e.detail) { //Firefox滑轮事件
- if (e.detail > 0) { //当滑轮向上滚动时
- fov -= 1;
- }
- if (e.detail < 0) { //当滑轮向下滚动时
- fov += 1;
- }
- }
- camera.fov = fov;
- camera.updateProjectionMatrix();
- renderer.render(scene, camera);
- }
- document.getElementById("WebGL-output").appendChild(renderer.domElement);
- </script>
- </body>
- </html>
【three.js练习程序】旋转物体自身的更多相关文章
- 【three.js第三课】鼠标事件,移动、旋转物体
1.下载three.js的源码包后,文件夹结构如下: 2.在[three.js第一课]的代码基础上,引入OrbitControls.js文件,此文件主要用于 对鼠标的操作. 该文件位置:在文件结构中 ...
- Js倒计时程序
Js倒计时程序 点击下载
- nw.js桌面程序自动更新(node.js表白记)
Hello Google Node.js 一个基于Google V8 的JavaScript引擎. 一个伟大的端至端语言,或许我对你的热爱源自于web这门极富情感的技术吧! 注: 光阴似水,人生若梦, ...
- js实现图片旋转、模板文件查看图片大图之记录篇[二]
一个小小的前端需求送给大家,使用js实现图片旋转,并且点击图片能够实现规定格式的大图. 主要使用的是jQuery的delegate()方法实现图片旋转,该方法主要的功能就是给某个组件绑定一个或一组事件 ...
- 【翻译】在Ext JS应用程序中构建可维护的控制器
原文:Building Maintainable Controllers in Ext JS Apps 你好You Had Me 你是Tearing Me Apart 模板We Dont Need t ...
- 在 Web 应用中创建 Node.js 应用程序
本分步指南将通过 Azure Web 应用帮助您启动并运行示例 Node.JS 应用程序.除 Node.JS 外,Azure Web 应用还支持其他语言,如 PHP..NET.Node.JS.Pyth ...
- 用chrome的snippets片段功能创建页面js外挂程序,从控制台创建js小脚本
用chrome的snippets片段功能创建页面js外挂程序,从控制台创建js小脚本 Chrome的snippets是小脚本,还可以创作并在Chrome DevTools的来源面板中执行.可以访问和从 ...
- 用简单的 Node.js 后台程序浅析 HTTP 请求与响应
用简单的 Node.js 后台程序浅析 HTTP 请求与响应 本文写于 2020 年 1 月 18 日 我们来看两种方式发送 HTTP 请求,一种呢,是命令行的 curl 命令:一种呢是直接在浏览器的 ...
- 【three.js练习程序】拖动选中的物体
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
随机推荐
- Centos配置vsftpd
#安装vsftpdyum install vsftpd #限制用户只能访问配置的目录,不能访问其他路径#修改vi /etc/vsftpd/vsftpd.conf chroot_list_enable= ...
- 全网最详细的Windows系统里PLSQL Developer 64bit安装之后的一些配置(图文详解)
不多说,直接上干货! 注意的是: 本地若没有安装Oracle服务端,Oracle server服务端64位,是远程连接,因此本地配置PLSQL Developer64位. PLSQL Develope ...
- JAVA多线程Thread VS Runnable详解
要求 必备知识 本文要求基本了解JAVA编程知识. 开发环境 windows 7/EditPlus 演示地址 源文件 进程与线程 进程是程序在处理机中的一次运行.一个进程既包括其所要执行的指令,也 ...
- lucene-01-简介
1, 介绍 hadoop作者开发的 hdfs最开始作为netch的文件存储来使用的 2, 存储结构 lucene快的原因, 是因为添加数据的时候会对数据进行分词, 将分词后的词建立索引, 存储到索引库 ...
- Spring总结 2.装配bean
本随笔内容要点如下: bean的作用域 占位符 一.bean的作用域 在默认情况下,Spring管理的bean的单例的.也就是说,无论注入多少次,都是同一个bean对象.一般情况下,单例模式是足以应付 ...
- QT 手式编译步骤
1: qmake -project 2: qmake 3: make 4: ./执行
- 【JS点滴】声明提前,变量声明提前,函数声明提前,声明提前的先后顺序
声明提前,函数声明提前,好吧,老生常谈的问题了.正好,前些天在掘金看到一道关于声明提前的笔试题,那么这里就以这道题来作为本文的引子吧,代码如下: console.log(a)//? a();//? ; ...
- 安装win8/win10提示无法在驱动器0分区上安装windows解决方法
在通过U盘或光盘安装win8/win8.1/win10系统时,不少用户遇到无法安装的问题,提示“无法在驱动器0的分区1上安装windows”,格式化分区1也不能解决,进而提示Windows无法安装到这 ...
- GoogLeNetv4 论文研读笔记
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 原文链接 摘要 向传统体系结构中引入 ...
- Spring @ResponseStatus
@ResponseStatus这个注解确实是个令我头疼的注解. 先记录下@ResponseStatus注解的定义. 记录几个得到的信息:@ResponseStatus声明在方法.类上, Spring3 ...