three.js 专题
wagner的作用已经被three集成
参看D:\npmwork\three.js-master\examples\js
中的shaders
和postprocessing
文件夹
关于提示找不到OrbitControls
OrbitControls已经从新版three.js中剥离,需要单独引入
添加场景背景,或vr背景
- 固定背景:
scene.background = new THREE.TextureLoader().load( url );
- vr背景:
scene.background = new THREE.CubeTextureLoader().load( [ 'px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg' ] );
vr背景中由六个图拼成一个六边型,相机处于这个六边形的中心,
矩阵详解
www.opengl-tutorial.org/beginners-t…
镜头控制
//OrbitControls
var controls = new THREE.OrbitControls( camera );
复制代码
辅助线
var axesHelper = new THREE.AxesHelper( 5 );
scene.add( axesHelper );
复制代码
球体图片
球体图片应该是比例2:1的图片,不然会造成图像失真 下边这个库中有太阳系行星的素材
github.com/jeromeetien…
让对象以指定轴(非xyz轴)旋转
skybox.rotation.x/y/z 是球体绕自身圆形旋转
threejs.org/docs/index.…
@.rotateOnAxis
www.cnblogs.com/mimime/p/61…
@.setRotationFromEuler
blog.csdn.net/birdflyto20…
threejs.org/docs/index.…
第一点 物体的rotation的旋转属性是相对与该物体的本身坐标系而言的,物体的rotation就是Euler欧拉角,但是会存在万向节死锁的问题。
第二点 three.js中提供了相关的方法rotateOnAxis(axis,angle),该方法需要注意的是angle是相对于物体之前状态的旋转角度,也就是增加角度;另外一点需要注意的是axis参数向量是相对物体本身坐标系的,且为单位向量,通过调用.normalize()得到单位向量;rotateOnAxis方法其实也就是调用Quaternion对象的setFromAxisAngle方法
第三点 构建旋转矩阵,方法有:1、makeRotationAxis(axis,angle)方法生成绕任意轴转angle弧度的旋转矩阵 2、new THREE.Matrix4().makeBasis(axisX, axisY, axisZ).setPosition(point);构建矩阵 之后将物体的quaternion应用setFromRotationMatrix
How to rotate a 3D object on axis three.js?
引用:
www.javascriptcn.com/read-28339.…
CommunityTony Han提出了一个问题:How to rotate a 3D object on axis three.js?,或许与您遇到的问题类似。
回答者PeterCory Gross给出了该问题的处理方式:
Here are the two functions I use. They are based on matrix rotations. and can rotate around arbitrary axes. To rotate using the world’s axes you would want to use the second function rotateAroundWorldAxis().
// Rotate an object around an arbitrary axis in object space
var rotObjectMatrix;
function rotateAroundObjectAxis(object, axis, radians) {rotObjectMatrix = new THREE.Matrix4();rotObjectMatrix.makeRotationAxis(axis.normalize(), radians);// old code for Three.JS pre r54:// object.matrix.multiplySelf(rotObjectMatrix); // post-multiply// new code for Three.JS r55+:object.matrix.multiply(rotObjectMatrix);// old code for Three.js pre r49:// object.rotation.getRotationFromMatrix(object.matrix, object.scale);// old code for Three.js r50-r58:// object.rotation.setEulerFromRotationMatrix(object.matrix);// new code for Three.js r59+:object.rotation.setFromRotationMatrix(object.matrix);
}var rotWorldMatrix;
// Rotate an object around an arbitrary axis in world space
function rotateAroundWorldAxis(object, axis, radians) {rotWorldMatrix = new THREE.Matrix4();rotWorldMatrix.makeRotationAxis(axis.normalize(), radians);// old code for Three.JS pre r54:// rotWorldMatrix.multiply(object.matrix);// new code for Three.JS r55+:rotWorldMatrix.multiply(object.matrix); // pre-multiplyobject.matrix = rotWorldMatrix;// old code for Three.js pre r49:// object.rotation.getRotationFromMatrix(object.matrix, object.scale);// old code for Three.js pre r59:// object.rotation.setEulerFromRotationMatrix(object.matrix);// code for r59+:object.rotation.setFromRotationMatrix(object.matrix);
}
复制代码
So you should call these functions within your anim function (requestAnimFrame callback), resulting in a rotation of 90 degrees on the x-axis:
var xAxis = new THREE.Vector3(1,0,0);
rotateAroundWorldAxis(mesh, xAxis, Math.PI / 180);
复制代码
点击互动
//向点击方向发射镭射光,返回接触的对象
var raycaster = new Raycaster();
var mouse = new THREE.Vector3();
window.addEventListener("click", (e) => {
mouse.set((e.clientX / window.innerWidth)*2- 1,-(e.clientY / window.innerHeight)*2+ 1, 50
);raycaster.setFromCamera( mouse, camera );
let a= raycaster.intersectObject( ground, true );
console.log(a);
});
复制代码
three图片虚化
wow.techbrood.com/fiddle/2567…
无限管道
www.9iweb.com.cn/effects/res…
转载于:https://juejin.im/post/5ba30f43e51d450e60582843
three.js 专题相关推荐
- js 点击闭包_【新年跳槽必备】2020最新(前端原生JS专题)面试题 速领!
最近我把每周更新的面试题 发在我们的学习群里 大家似乎都很高冷哇 难道是默默的做题去了没说话 每期面试题都是Richard老师认真准备的 真的希望能帮到大家哦 本期是前端原生JS专题 A前端原生JS专 ...
- Danfo.js专题 - Series对象
Danfo.js专题 - Series对象 jcLee95 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550 ...
- Danfo.js专题 - Danfo.js与Dnotebook简介与入门
Danfo.js与Dnotebook -- pandas.jupyter的JavaScript版本 [前言]:谷歌公司不仅推出了tensorflow的JavaScript版本tensorflow.js ...
- Danfo.js专题 - 附:Dnotebook(Danfo Notebook)单机资源与汉化文档
本文是汉化版的Danfo notebook对应修改的demo,与原版demo内容相比,请求csv的路径发生了变化,且部分文字汉化了.该汉化版本在博主发布的资源中可以找到. 由于G内网无法访问该文档,故 ...
- ctfshow node.js专题
文章目录 web334 web335 web336 web337 web338 web339 web340 web341 web342.web343 web334 给了附件,然后进入后发现是一个登录框 ...
- 2023前端面试(JS专题)
目录 一.前言 二.问题 1,JS数据类型 2,== 与 === 的区别? 3,JS的宏任务和微任务? 4,实现Jsonp 5,JS作用域 6,JS作用域+this指向+原型笔试题(高频) 7, JS ...
- Quill.js 专题
参考: https://luncher.github.io/2018/06/02/Quill%E7%BC%96%E8%BE%91%E5%99%A8%E6%B7%BB%E5%8A%A0%E8%87%AA ...
- AR.js专题-多Renderer支持
支持2渲染器 代码参考 https://threejs.org/docs/#examples/renderers/CSS3DRenderer // CSS3Drenderer cssScene = n ...
- js的tree数组对象扁平化思否_JS专题之数组展开
前言 首先什么是数组展开? 假如现在有这样一个需求:将后台的一个多重 List 数据,展开成一个 List 后,并去重后排序: ["a", "b", [&quo ...
最新文章
- x is y python_Python 基础
- 中介分析 相对直接效应 相对简介效应_中介效应分析方法和流程
- “积水上报”广获好评 畅移信息接棒 “互联网+政务”落地
- python3 字符串转数组 数组转字符串 切片操作
- 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )
- 中国人工智能产业发展指数重磅发布,中国声谷首批AI达摩名单揭晓
- 让开!!!谁也别拦着我封装React组件!
- 基于稀疏矩阵的k近邻(KNN)实现
- [BZOJ]2194: 快速傅立叶之二
- Docker核心技术与实现原理
- 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理...
- Raki的读paper小记:Kernel Continual Learning
- jquery 取的单选按钮组的值
- 腾讯2019年理财通用户突破两亿;浪潮云估值突破100亿元 | 美通企业日报
- FRM-91500: Unable to start/complete the build.
- BT技术概念 — 一些术语的意思
- python求阶乘怎么做_python如何求阶乘
- emoji unicode java_4字节emoji表情对应的Unicode编码获取和编码转换
- 中科创达邹鹏程:与openEuler的结缘并非偶然,操作系统的未来离不开创新
- 列表/元组/切片/字典/字符串处理方法