three.js

THREE.js - Merging / Instancing Multiples of The Same GLTF Model, Without Shader Material..?

牧云@^-^@ 提交于 2020-05-14 09:07:06
问题 I am using the code below to load and clone a GLTF model. In practice this works, however it is way too resource heavy and the model is around a 2mb. It has no textures and the materials are a single MeshPhongMaterial. I understand two ways to optimise this are to merge them into one mesh instead of cloning, however following numerous attempts (such as iterating within the load function with a for loop), I haven't been able to successfully do this. The second being instancing, however from a

How to recreate the Three.js OrbitControl movement on mouse move?

痴心易碎 提交于 2020-05-13 07:50:07
问题 I would like to recreate the Three.js OrbitControl movement without the click & drag , i.e. simply making the camera following mouse movement. I tried to recreate it from scratch, but it was too much effort as the problem is that the camera moves on three axis, not just two. I'm pretty sure some has done before. Specifically I would like the camera to move around the scene origin keeping the same distance from it. 回答1: I had the same requirement as OP. This is how I solved it, with help from

Camera arguments in Three.js

江枫思渺然 提交于 2020-05-09 18:04:22
问题 This is how a camera is instantiated: var camera = new THREE.PerspectiveCamera( VIEW_ANGLE, ASPECT, NEAR, FAR ); What do these values mean? 回答1: The first param is FOV means field of view, imagine a camera on a tripod, if you change lens to wide angle you get a higher FOV. Try to imagine a cone coming out from the camera, it can only see objects in that area. ASPECT means aspect ratio, a widescreen TV is 16/9 and old ones were 4/3, usually just give it the screen width/height or the dims of a

TypeScript进阶开发——ThreeJs基础实例,从入坑到入门

戏子无情 提交于 2020-05-09 06:35:46
  前言   我们前面使用的是自己编写的ts,以及自己手动引入的jquery,由于第三方库采用的是直接引入js,没有d.ts声明文件,开发起来很累,所以一般情况下我们使用npm引入第三方的库,本文记录使用npm,typescript开发threejs3D项目,搭建基础实例,为以后开发具体业务做准备   项目结构   依旧是熟悉的SpringBoot项目,不同以往的是使用了npm管理工具来下载依赖js库,类似maven,同时为了解决typescript编译后引入npm库的路径有问题,导致浏览器报错的问题,我们采用的webpack打包工具来打包 PS:webpack依赖的文件真的是多,全都安装完后,好几百M   下面简单说一下如何初始化npm、webpack,以及下载jquery、three等js库   npm的使用   初始化   cmd先打开到项目的 threejs\src\main\resources\static 路径,使用npm init命令,回答一系列问题(当然也可以全部按照默认值),初始化成npm项目   得到node_modules目录以及package.json文件   当我们使用打包命令,会提示我们还缺少那些依赖,这时候我们按照提示去下载就可以了   有一点要注意,package.json文件的name值不能用typescript,我们改成 "name":

当微信小程序遇到AR(四)

时光总嘲笑我的痴心妄想 提交于 2020-05-04 13:31:49
当 微信小程 序遇到 AR ,会擦出怎么样的 火花 ? 期待 与 激动 ...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习。 本课程需要一定的基础:微信开发者工具,JavaScript,Html,Css 第四章:基石-摄像头与Three.js结合 【前情提要】   上一章,前面的两章内容,我们学习了基本的摄像头数据读取以及Three.js三维场景的创建。这两章内容学习之后,我们已经可以做很多更定制化的开发了。例如:   1. 我们已经可以做基于摄像头图像的AR内容开发,(比如人脸识别,AR美妆涂口红,戴帽子,适眼镜等等)   2. WebGL的三维游戏。   这一章,既是基础也是升华,主要是探讨,如何在微信小程序中出现摄像头画面的背景,然后在背景之上渲染出WebGL的三维内容。 1. 实现在微信小程序中访问摄像头,并且可以实时的拿到每一帧画面的数据。 2. 实现在微信小程序中访问WebGL接口,实现绘制三维物体。该教程采用Three.js引擎 3. 实现在背景为摄像头实时画面的背景上显示WebGL的3D物体。 4. 整体框架搭建 5. 图像算法接入 【目的】 微信小程序中实现摄像头画面为背景,之上渲染WebGL内容 [方案]   在开始开发之前,我们想罗列一下各种可能的方案。   要想在摄像头画面之上渲染出WebGL的内容

3D开发-AR.js 图片匹配

瘦欲@ 提交于 2020-05-04 00:32:57
图片匹配方式 加载一张图片作为识别的pattern marker。 代码 AR.js/three.js/examples/marker-training/examples/patternmarker-from-image.html修改代码 //从图片加载匹配模式 // load image and convert it to a marker var imageURL = '../../res/arjs/marker/inner/inner-letterA.png'; THREEx.ArPatternFile.encodeImageURL(imageURL, function onComplete(patternFileString) { var patternURL = 'data:text/plain;base64,' + btoa(patternFileString) // create THREEx.ArMarkerControls var markerControls = new THREEx.ArMarkerControls(arToolkitContext, markerRoot1, { type: 'pattern', patternUrl: patternURL, // patternUrl : "../../res/arjs/data/pattern

150行JavaScript代码实现增强现实

一个人想着一个人 提交于 2020-05-04 00:32:35
增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、 3D 模型的技术,这种技术的目标是在屏幕上把 虚拟 世界套在现实世界并进行互动。这种技术1990年提出。随着随身电子产品 CPU 运算能力的提升,预期增强现实的用途将会越来越广。 本文介绍使用JavaScript开源框架AR.js实现的增强现实的Hello World例子。 先看效果: 首先在手机浏览器里打开我部署在github page上的这个demo应用: https://i042416.github.io/FioriODataTestTool2014/WebContent/098_ar.html 我用的是Android手机安装的Chrome浏览器。 打开网页,会提示你是否允许这个网页应用访问您的手机摄像头。点击允许: 用手机上的摄像头扫描这张图片: 神奇的事情就发生了。您会看到,通过手机摄像头望过去,手机屏幕里会出现一个新的不断滚动的3D物体,如下图所示。 下面具体介绍这个最简单的例子是怎么开发出来的。 所有的源代码在我的github上: https://github.com/i042416/FioriODataTestTool2014/tree/master/WebContent/ar 新建一个html文件,把下列150行代码粘贴进去

Three.js 关于照相机,视角的理解

狂风中的少年 提交于 2020-05-02 04:11:12
Three.js 关于照相机,视角的理解 另附说明:本系列文章只是作者用于学习理解threejs以及WebGL的学习心得,学习途径也是从 WebGL中文网 上学习所得,如果上述网站认定侵权或不正当触犯其利益,请联系作者(PS:千万别告我),其它转载者造成的影响请自己负责,与本人无关 好了,该声明的也声明了,本人也是初入thre.js的丑新,写写也是为了记录理解,说的不对的地方,也欢迎批评指正 通过对 WebGL中文网 初级教程的前三章的学习。 知道3D应用中有4个最重要的组建 场景(scene)、相机(camera)和渲染器(renderer)还有几何体 场景渲染器几何体的理解不难,这里详细说一下相机 这是照相机的构造函数 //fov 代表视角 //aspect 宽高比 //near 最近看到 //far 最远看到 var camera = PerspectiveCamera( fov, aspect, near , far ) //而这里其实确认的是照相机里近平面的距离 camera.position.z = 5 ; 同时需要当心的是这里使用的是右手坐标系(听视频老师讲的,本人也亲测了) 另附学习代码 < script > var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera( 75 ,

精通 WebGL+Three.Js 视频教程

丶灬走出姿态 提交于 2020-05-02 04:09:45
课程目录 01-基础部分 : p S! q5 D z- i 01-WebGL与three.js的基础、与opengl的关系.mp4 02-编写第一个three.js程序.mp4 1 r' ^; [% V7 Z0 F! v) y' ?# f 03-three.js程序框架,绘制一条直线.mp4 & i! |; I! ^- O' `% Y0 x3 t 04-三维世界的组成(点、线).mp4 # Q E P+ n( ?/ P: }8 V/ q 05-坐标系的秘密(世界坐标、本地坐标).mp4 ; G& u; p3 g7 g2 W$ k 06-three.js让场景动起来的两种方法.mp4 07-帧循环、游戏循环、渲染循环需要知道的深入意义.mp4 1 p$ ~& @6 D5 O5 d# q2 D- i [ 08-three.js(WebGL)相机的工作原理,适用于任何一种3D编程方法.mp4 09-正投影和透视投影相机的实践.mp4 4 y0 \- b5 g/ O+ i* t. k 10-深入浅出WebGL中相机的三个向量参数.mp4 13-光的初体验环境光.mp4 2 i' c/ d. U# W 14-光的初体验环境光2.mp4 15-光的初体验点光源.mp4 ; n/ t; n1 v- ]8 l% \ 16-纹理一种让模型美丽的特殊技能.mp4 ! V4 y9 Z' c& M0 L%

Flutter 3D绘图初探

耗尽温柔 提交于 2020-05-01 16:16:47
Flutter SDK目前没有专门针对3D图形绘制的API模块,当然提供3D API也在Flutter的长期计划中,目前还主要是集中在2D图形上,官方FAQ也对这一点进行了说明。 通过查找资料找到一些现有的Flutter 3D绘制方面的内容。 Canvas绘制3D图形 不使用GPU和OpenGL ES,在已有flutter SDK功能基础上,可以借助CustomPaint widget和Canvas结合Vectors来实现对obj标准3D模型的绘制,进而结合GestureDetector利用手势拖拽来transform改变和刷新3D图像,这是比较原始的方法。 实例1: https://github.com/RichardCubed/flutter_demo_3d 实例2: https://github.com/klaszlo8207/Flutter-OBJ-3D-Viewer 借助第三方插件Unity3D 可以使用Flutter Unity Widget插件在flutter应用中嵌入Unity3D引擎视图来展示3D图形。可以使你的应用程序具有Unity的精彩的游戏化功能,在Android和iOS上都很好用。 相关的项目如下: https://dreamsoftin.com/ https://github.com/snowballdigital/flutter-unity-view