threejs

ThreeJS shadow not rendering

匿名 (未验证) 提交于 2019-12-03 02:20:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I've looked through a number of other S.O. questions, followed all of the advice, but I'm still clueless as to why I can't get shadows to render on this very basic scene. http://jsfiddle.net/4Txgp/ [Updated] Code: var SCREEN_WIDTH = window.innerWidth - 25; var SCREEN_HEIGHT = window.innerHeight - 25; var camera, scene; var canvasRenderer, webglRenderer; var container, mesh, geometry, plane; var windowHalfX = window.innerWidth / 2; var windowHalfY = window.innerHeight / 2; init(); animate(); function init() { container = document

Threejs: assign different colors to each vertex in a geometry

匿名 (未验证) 提交于 2019-12-03 02:14:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I want to do picking via IdMapping in Three.js Because of performance issues I only have one huge geometry, computed like this: for (var i = 0; i How can I assign different colors to each vertex in my geometry? 回答1: It has to be geometry.vertexColors instead of geometry.colors (push a colour per vertex). And the material: material = new THREE.MeshBasicMaterial({ vertexColors: THREE.VertexColors }); 回答2: I'm using version 71. Lee's answer probably still works, but seemed very convoluted. Here's the simplest example I could do of making a Mesh

Zoom to object in ThreeJS

匿名 (未验证) 提交于 2019-12-03 01:58:03
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Where can I change the zoom direction in three.js? I would like to zoom in the direction of the mouse cursor but I don't get where you can change the zoom target. 回答1: updated wetwipe's solution to support revision 71 of Three.js, and cleaned it up a little bit, works like a charm, see http://www.tectractys.com/market_globe.html for a full usage example: mX = ( event.clientX / window.innerWidth ) * 2 - 1; mY = - ( event.clientY / window.innerHeight ) * 2 + 1; var vector = new THREE.Vector3(mX, mY, 1 ); vector.unproject(camera); vector.sub

threejs: smoothly rotate camera towards an object

匿名 (未验证) 提交于 2019-12-03 01:45:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: i have just started to study three.js and i am having some trouble to write a function that takes as arguments an object position (Vector3) and a time in milliseconds, and gradually rotate the camera to face it in that time. Substantially a lerp version of the builtin lookAt method. First i've tried using tweenjs to get smooth rotate transition. For the start and end parameters i've created a dummy object and set its position, rotation and quaternion the same as the camera, then i have use the lookAt function on it to face towards

THREEJS : Vertex Color Baking

匿名 (未验证) 提交于 2019-12-03 01:18:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: When coloring a mesh using vertex coloration, how does one save the colors as a texture? For example, if a mesh is colored based on its normals (similar to this example ), how can one create a .png for the texture? For this purpose, it can be assumed that this mesh has texture coordinates. 文章来源: THREEJS : Vertex Color Baking

vr h5播放器开发

匿名 (未验证) 提交于 2019-12-03 00:19:01
不需要用户安装客户端,实现在pc和手机浏览器中浏览vr视频。基于videojs-panorama实现,该插件依赖videojs和threejs,通过videojs播放各种格式的视频文件,然后将解码后的视频用threejs来渲染实现浏览3d视频的效果。 代码处理流程如下: 在plugin.js中设置player回调onPlayerReady=》 (1)如果不支持webgl,显示“不支持webgl显示”的提示,用原生player样式播放视频 (2)如果为mobile设备,加载mobile显示样式,禁用原生player样式 (3)用canvas显示视频,canvas中用threejs显示3d视图 在basecanvas.js中 如果不支持texture显示或者 safari 播放hls时,创建helperCanvas来画图 经过真机测试,总结如下: 1,ios11.2以下版本不支持跨域访问,可以在不跨域情况下正常播放mp4和hls格式视频。 ios11.2以上无此限制 2,android自带浏览器不支持同层播放,播放vr视频时会被系统自带播放器挡住。用微信的x5内核支持同层播放,在video标签中设置x5-video-player-type="h5" x5-video-player-fullscreen="true" style="object-fit:fill"

ThreeJS 3d模型简介

瘦欲@ 提交于 2019-12-02 02:00:34
本文主要是对Threejs中加载模型的种类进行简单的知识科普。 3ds (.3ds) 3ds是3ds max通用储存文件格式。使用的范围更宽,可被更多的软件识别使用. amf (.amf) AMF是以目前3D打印机使用的“STL”格式为基础、弥补了其弱点的数据格式,新格式能够记录颜色信息、材料信息及物体内部结构等。AMF标准基于XML(可扩展标记语言)。 3mf (.3mf) 由微软牵头的3MF联盟,于2015年推出全新的3D打印格式——3MF(3D Manufacturing Format),相较于STL格式,3MF档案格式能够更完整地描述3D模型,除了几何信息外,还可以保持内部信息、颜色、材料、纹理等其它特征。3MF同样也是一种基于XML的数据格式, assimp & assimp2json (.assimp |.json) Assimp是一个强大的模型加载和转换库,支持多种格式的加载和转换,可通过c++进行调用开发。assimp2json顾名思义就是assimp格式的json格式导出。 awd (.awd) AWD是一种用于三维场景的二进制格式,并且通常与 AWD 引擎一起使用。 Babylon (.babylon) 微软的基于webgl的开发框架. Babylon.js BVH (.bvh) BVH是BioVision等设备对人体运动进行捕获后产生文件格式的文件扩展名

使用ThreeJs从零开始构建3D智能仓库——第二章

本秂侑毒 提交于 2019-11-30 11:57:02
使用ThreeJs从零开始构建3D智能仓库——第二章 最新进展 如何添加墙壁、窗户、门 添加三面实心的墙壁 创建挖去门窗的墙 安装门及窗户 完整的代码 结束语 最新进展 最近这两天因为项目上比较空闲了,所以就想着怎么给我这个粗劣的小玩意儿加点高大上的东西,经过身边同事的提醒,我发现自己做的这个仓库只有一个房间,但是一般来讲厂房内可能会有多个仓库,或者说同一个仓库也有可能会有好几层。 所以开发一个场景切换的功能至关重要。经过一天的探索与发现,我终于顺利解决了这个问题,归功于网络上眼花缭乱的开源Js和插件,现将效果展示在下面: 可见右侧新添了一个选择的控件,总共有两个场景(第二个场景暂时还没做,先用一张图片代替),通过点击不同的按钮来实现不同场景的切换,切换过程中有类似翻转的特效。这部分的内容如果大家有兴趣的话我会放到以后讲解,今天还是继续第一章的内容,来看看如何添加墙壁、窗户、门和一个很关键的重点:如何选中一个物体并添加选中特效。如何选中一个物体并添加选中特效。如何选中一个物体并添加选中特效。(重要的话说三遍,选中是之后很多功能的前提) 如何添加墙壁、窗户、门 这部分内容整体来说并不难,无论是墙壁,还是门窗户,其实质都是一个长方体,我们使用THREE.BoxGeometry这个几何体来构建这一切,完成后的效果如下: 添加三面实心的墙壁 实心的墙壁是很简单的,这里直接给出代码 /

threejs点击事件

醉酒当歌 提交于 2019-11-29 06:37:06
本文链接:https://blog.csdn.net/ithanmang/article/details/80897888 示例浏览地址:https://ithanmang.gitee.io/threejs/home/201807/20180703/02-raycasterDemo.html 双击鼠标左键选中模型并显示信息。 首先,解释一下三种坐标系的概念:场景坐标系(世界坐标系)、屏幕坐标系、视点坐标系。 场景坐标 通过three.js构建出来的场景,都具有一个固定不变的坐标系(无论相机的位置在哪),并且放置的任何物体都要以这个坐标系来确定自己的位置,也就是(0,0, 0)坐标。例如我们创建一个场景并添加箭头辅助。 屏幕坐标 在显示屏上的坐标就是屏幕坐标系。 如下图所示,其中的clientX和clientY的最值由,window.innerWidth,window.innerHeight决定。 视点坐标 视点坐标系就是以相机的中心点为原点,但是相机的位置,也是根据世界坐标系来偏移的,webGL会将世界坐标先变换到视点坐标,然后进行裁剪,只有在视线范围(视见体)之内的场景才会进入下一阶段的计算 如下图添加了相机辅助线. 射线检测 若想获取鼠标点击的物体,name就需要把屏幕坐标系转换为three.js中的三维坐标系。 three.js提供了一个类THREE

threejs 学习之射线的使用

[亡魂溺海] 提交于 2019-11-27 19:39:08
主要内容: 使用 threejs 创建 20x20 的网格,鼠标移动时,方块跟随移动,点击时在网格任意位置放置方块,按 shift 时,删除当前位置方块。 流程如下: 创建网格 创建一个与网格同样尺寸的平面 创建一个方块 mesh_1 与网格同样的尺寸 一个与网格同样的方块 geometry_2 , 不加入 scene 中 三个事件: 鼠标移动事件,随着鼠标移动,更改 mesh_1 位置,并重新渲染 鼠标点击事件,在交点位置,创建新 mesh, 若是相交对象不为 平面,则删除当前对象 keydown, keyup, 更改是否删除的状态 详细代码如下: import * as THREE from './build/three.module' import { stat } from 'fs'; var camera, scene, renderer; var moveMesh, staticGeo,staticMat, plane; var objects = []; var raycaster, mouse; var isShiftDown = false; function init() { camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);