首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Three.js 这样写就有阴影效果啦

本文要实现效果 本文适合 Three.js 入门级工友阅读~ 如果你还不了解 Three.js ,可以先看看 《Three.js 起飞》 。 本文使用 Three 版本是 137 。...用 PlaneGeometry 生成一个平面,并设置该平面的 receiveShadow 属性为 true 就能接受别的物体投射过来阴影。 立方体 本例物体元素。...使用 SpotLight 创建光源,并设置该光源 castShadow 为 true 开启阴影效果。...第3步:创建地面 在本例中地面是用来接受物体投影载体。 创建地面我使用PlaneGeometry 平面,该方法只需传入宽和高即可。...// 省略部分代码 plane.rotation.x = -90 * Math.PI / 180 // 地面 x轴 旋转-90度 第4步:创建立方体 我使用 BoxGeometry 创建立方体,设置一个红色纹理

2.5K10

Three.js』场景 Scene

本文简介 在阅读本文前,我希望你对 Three.js 有一个初步理解。如果你不清楚 Three.js 是什么,我推荐你先阅读 『Three.js』起飞!...在使用 Three.js 前,必须先了解 3大组件:摄像机、场景、渲染器。这是 Three.js 必需品。 本文讲解是 场景 用法。 什么是场景?...属性 属性名 说明 children 返回一个场景中所有对象列表,包括摄像机和光源 fog 给场景添加雾化效果,雾化效果特点是场景中物体离得越远就会变得越模糊 overrideMaterial 使用该属性可以强制场景中所有物体使用相同材质...,学 Three.js 最好方式就是自己敲一遍,然后看效果~ 创建场景 只有场景是无法运行,必须加上摄像机和渲染器才行。...方法:获取场景中 指定名称对象 getObjectByName 如果你在创建元素时给元素添加一个 name ,之后就可以使用在场景对象中使用 scene.getObjectByName 方法根据 name

5.5K51
您找到你想要的搜索结果了吗?
是的
没有找到

造个海洋球池来学习物理引擎【Three.js系列】

,并且设置重力系数 9.8 const world = new CANNON.World(); world.gravity.set(0, -9.82, 0); 在物理世界中创建一个和我们 Three.js...创建 Three.js地面, 这里主要用到PlaneGeometry 它有4个参数 PlaneGeometry(width : Float, height : Float, widthSegments...: Integer, heightSegments : Integer) 和之前类似我们只需要关注前 2 个参数,就是平面的宽和高,由于平面默认是 x-y 轴平面,由于Three.js 默认用是右手坐标系...,对应旋转也是右手法则,所以逆时针为正值,顺时针为负值,而我们平面需要向顺时针旋转 90°,所以是 -PI/2 const planeGeometry = new THREE.PlaneGeometry...来总结一下我们本期学习内容,一共用到 SphereGeometry、PlaneGeometry、 BoxGeometry,然后学习了 Three.js 几何体 与 物理引擎 cannon.js 绑定

1.9K10

我是如何用 Three.js 在三维世界建房子(详细教程)

这样一个房子,其实也是由几个几何体堆起来: 具体有这么些几何体: 地板就是个平面,用 PlaneGeometry平面几何体) 就可以画,贴上个纹理贴图就行。...还剩下一个草地,这个也是一个平面,用 PlaneGeometry平面几何体)画,只不过就是长宽比较大,看不到尽头而已。 看起来还有雾?...我们创建平面几何体(PlaneGeometry),长和宽制定一个很大值,比如 10000,然后加载草地图片作为纹理(Texture),构成材质。之后就可以创建出草地了。...然后草地平面要旋转一下。...const light = new THREE.AmbientLight(0xCCCCCC); scene.add(light); 创建相机,使用透视相机,也就是近大远小那种透视效果: const

4.9K61

Three.js教程(6):几何体

此时效果如下,你可以修改参数来更新mesh: ? CircleGeometry CircleGeometry是一种圆形平面几何体。...3个来绘制,如果是小数,Three.js也会转化为整数(向下取整)来处理,但是最好还是传入就是整数,因为有的几何体传入小数段数会报错。...RingGeometry RingGeometry是一种环状平面几何体。...更多几何体 我们上面讲了5种几何体,估计你也知道了创建几何体套路了,其他几何体创建方式和上面的基本一致,这里就不做更多叙述了。...当然Three.js不仅仅可以使用给出几何体,甚至还可以自定义几何体,最重要是还可以导入其他建模软件做出来模型,这一点是非常厉害

1.7K61

一文搞懂如何在Three.js创建阴影效果 |《Three.js零基础直通14》

,一个平面,再创建一个平行光和一个环境光。...Near and far Three.js使用相机来帮助计算阴影贴图。这些相机与我们前面学到相机具有相同属性。比如我们必须定义相机近视距离和远视距离。...这是由于在Three.js中点光源阴影贴图要依赖6个方向上相机来实现-_-!。 正因为点光源会在每个方向上发光,所以Three.js必须通过6个方向渲染才能创建出多维数据集阴影贴图。...() const bakedShadow = textureLoader.load('/textures/bakedShadow.jpg') 最后,我们使用MeshBasicMaterial来创建一个基本材质平面即可...const simpleShadow = textureLoader.load('/textures/simpleShadow.jpg') 加载好贴图后,我们可以通过使用一个平面创建阴影,平面创建出来时默认是面向

6.5K10

如何实现一个3d场景中阴影效果(threejs)?

Three.js中,物体可以形成阴影投影效果,但是由于渲染阴影需要消耗计算机大量资源,所以Three.js在默认情况下是不会渲染阴影,所以需要我手工设置开启阴影效果。...创建平行光接口与环境光一致。实际使用过程中具体需要用到光源,怎么去布置光源,需要根据具体应用场景来定。 创建好光源之后,需要设置castShadow属性告诉光源开启阴影投射。...cube.position.z = -10; //告诉立方体需要投射阴影 cube.castShadow = true; scene.add(cube); 4、创建底部平面接收阴影设置...最后,添加一个接收阴影平面,通过receiveShadow属性设置平面接收阴影。...//平面 var planeGeometry = new THREE.PlaneGeometry(100,100); var planeMaterial = new THREE.MeshStandardMaterial

2.6K40

猿如意中【Node.js】工具详情介绍

Node.js 在其标准库中提供了一组异步 I/O 原语,以防止 JavaScript 代码阻塞,并且通常,Node.js 中库是使用非阻塞范例编写,这使得阻塞行为成为例外而不是常态....Node.js 具有独特优势,因为数百万为浏览器编写 JavaScript 前端开发人员现在除了客户端代码之外,还能够编写服务器端代码,而无需学习完全不同语言....在 Node.js 中,可以毫无问题地使用 ECMAScript 标准,因为您不必等待所有用户更新他们浏览器——您负责通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,您还可以通过运行带有标志...目录 安装three完成 六、基于NodeThree案例 6.1 构建一个Three案例 参考博客Three.js入门教程——教不会算我输 在前端demo文件夹下创建src目录,在src...--------------------- var planeGeometry = new THREE.PlaneGeometry(60, 20, 1, 1); var planeMaterial

24920

three.js矩阵变换(模型视图投影变换)

这里我就通过three.js这个图形引擎,验证一下其推导是否正确,顺便学习下three.js是如何进行图形变换。 2. 基本变换 2.1....模型变换矩阵 在场景中新建一个平面: // create the ground plane var planeGeometry = new THREE.PlaneGeometry(60, 20); var...var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); 这里创建了一个透视投影相机...开关变量会每60帧变一次,如果为假,会使用内置projectionMatrix和modelViewMatrix来计算顶点值,此时场景中物体颜色会显示为蓝色;如果开关变量为真,则会使用传入计算好mvpMatrix...其他 在使用JSconsole.log()进行打印camera对象时候,会发现如果不调用render()的话(或者单步调式),其内部matrix相关成员变量仍然是初始化值,得不到想要结果。

5.9K10

three.js 几何体(一)

这篇郭先生来说一说three.js几何体都有哪些?在线案例点击预览three.js 几何体 1....了解各种three.js几何体 下面是three.js几何体分类介绍以及构造器参数(r117版本) |名称|构造器参数| |-|-|-| |PlaneGeometry平面几何体)|width —...平面沿着X轴宽度。...height — 平面沿着Y轴高度。默认值是1。widthSegments — (可选)平面的宽度分段数,默认值是1。heightSegments — (可选)平面的高度分段数,默认值是1。...认识几何体 先上图 image.png 图片对应就是这些几何体,如果你想更加细致认识这些几何体请看demo。接下来几篇我将详细介绍这些几何体使用以及注意事项。 转载请注明地址:郭先生博客

1.3K10

three.js中场景模糊、纹理失真的问题

概述 在three.js场景中,有时会遇到场景模糊,纹理失真的现象,似乎three.js并没有用到纹理图片应有的分辨率。可以通过相关设置来解决这个问题。 2. 方案 2.1....开启反走样 three.js创建WebGLRenderer对象有抗锯齿选项支持: var renderer = new THREE.WebGLRenderer({ antialias: true...开启HiDPI设置 如果开启抗锯齿后仍然显示比较模糊,那么可能就是使用是HiDPI (High Dots Per Inch) 设备显示造成,HiDPI设备能在较小尺寸下显示出较高分辨率,也就是每一个屏幕上物理像素其实是由多个像素显示出来...= new THREE.PlaneGeometry(2, 2); // var planeMaterial = new THREE.MeshBasicMaterial({...参考 关于ThreeJS场景失真的问题 关于three.js 抗锯齿 HiDPI (简体中文)

6.7K20

【实战】用 WebGL 创建一个在线画廊

z 是相机在 z 轴上位置。 在 createScene 方法中使用是 Transform 类,它是一个新场景表示,包含所有表示 WebGL 环境中图像平面。...创建可重用几何实例 不管你用是哪种 WebGL 库,总是要通过重复使用相同几何图形引用来保持较低内存使用量,这是一种很好做法。...为了表示所有图像,我们将使用平面几何图形,所以要创建一个新方法并将新几何图形存储在 this.planeGeometry 变量中。...Mesh、 Program 和 Texture 类来创建 3D 平面并赋予纹理,在例子中,这个平面会成为我们图像。...可以用 sin 和 cos 像平面一样弯曲我们顶点,添加下面的代码: p.z = (sin(p.x * 4.0 + uTime) * 1.5 + cos(p.y * 2.0 + uTime) * 1.5

3K20

元宇宙基础案例 | 大帅老猿threejs特训

------数字资产研究院学术与技术委员会主任朱嘉明教授 来源知乎 Three.js基础入门-自学篇 Web3D技术 随着浏览器性能和网络带宽大幅度提升,以及WebGL实现,使得Web应用中也可以使用...WebGL使用需要图形学知识,对WebGL编程可以通过js和glsl两种语言。如果想直接使用WebGL,使用者可以采用着色器(Shader)用来实现图像渲染,但对于新手来说,Shader还是困难。...这时我们可以使用Three.js来简化我们对底层图形学开发知识,更快上手3D开发过程。...Three.js自学篇 官网以及下载 Three.js官网 Three.js下载地址:github下载, 国内码云 本文采用码云下载 下载后,解压 备注,你可以根据下载后文件,搭建一个本地...入门教程——教不会算我输 编码 在前端demo文件夹下创建src目录,在src目录下创建a.html内容如下 代码: <!

38631

Three.js构建三维世界房子

1 创造世界 很好理解,就是我们现在看到世界,用Three.js做出来。...首先对Three.js还是要了解其一些概念,这样才能看更明白。新建一个项目,引入Three.js,网上不好js找没关系,我会在最后提供本篇文章完整demo。...2 创建一个地面 上面的步骤只是创建了全景世界,但是我们需要有个地面来放置我们之后要创建房子,因此,这个地面要比较大。...创建 为了方便,我们新建一个方法来创建,后面只需要调用这个方法即可 function createGrass() { // 创建一个平面缓冲几何体 const geometry = new THREE.PlaneGeometry...(地板) // 创建地板方法 function createFloor() { // 创建一个平面缓冲几何体 const geometry = new THREE.PlaneGeometry

1.7K21

Threejs入门之七:Threejs中几何体

1.立方缓冲几何体(BoxGeometry),立方缓冲几何体我们前面已经使用过了,它是四原始几何类,它通常使用构造函数所提供“width”、“height”、“depth”参数来创建立方体或者不规则四形...添加立方缓冲几何体到场景中,前面也使用过,使用下面的代码可以将立方缓冲几何体添加到场景中// 创建一个几何体,相当于在画布上想要呈现物体const geometry = new THREE.BoxGeometry...同时它也可以用于创建规则多边形,其分段数量取决于该规则多边形数。...(PlaneGeometry):PlaneGeometry是用于生成平面几何体类,其构造函数如下 PlaneGeometry(width : Float, height : Float, widthSegments...height — 平面沿着Y轴高度。默认值是1。 widthSegments — (可选)平面的宽度分段数,默认值是1。 heightSegments — (可选)平面的高度分段数,默认值是1。

1.3K30

Three.js教程(7):材质

文件,该文件必须在three.js下方引入,如下: <script type="text/javascript" src=".....不再是通过new THREE.Mesh(geometry, material);这样来<em>创建</em><em>的</em>。...不同面<em>使用</em>不同<em>的</em>材质 不同面<em>使用</em>不同<em>的</em>材质很简单,只要把材质传一个数组就可以了,与联合材质不同<em>的</em>是,联合材质是多种材质混合<em>使用</em>,这里是每一个面用了一种材质。...在老版本<em>的</em><em>three.js</em>中有一个名叫MeshFaceMaterial<em>的</em>材质可以让不同面拥有不同<em>的</em>材质,这里就不简绍已经废弃<em>的</em>MeshFaceMaterial了。...---- 至此,<em>three.js</em><em>的</em>基本概念我们已经讲完了,大家是不是收获满满?<em>three.js</em>看似东西多,其实基本套路都是一样<em>的</em>,就比如基本上所有的设置材质<em>的</em>方法都是类似的。

2.5K31
领券