【Three(2)

修改基础材质为标准网格材质

const basicMaterial = new THREE.MeshBasicMaterial()
// 修改上一行代码为下一行代码,基础材质 ——> 标准网格材质
const material = new THREE.MeshStandardMaterial()

在这里插入图片描述


环境光:均匀的照亮场景中的所有物体。

接下来,我们来给物体添加环境光

// 第一个参数是颜色,第二个参数是明亮程度(0-1)
const light = new THREE.AmbientLight(0xffffff, 0.9)
// 向场景中添加环境光
scene.add(light)

在这里插入图片描述


平行光:方向从一个平行光位置 position 到 target 位置

接下来,我们来给物体在环境光的基础上添加平行光

const directionLight = new THREE.DirectionalLight(0xffffff, 0.95)
// 设置光的位置
directionLight.position.set(0, 10, 10)
// 向场景中添加平行光
scene.add(directionLight)

在这里插入图片描述

二、置换贴图和顶点细分设置

.displacementMap 位移贴图会影响网格顶点的位置,与仅影响材质的光照和阴影的其他贴图不同,移位的顶点可以投射阴影,阻挡其他对象,以及充当真实的几何体。

.displacementScale 位移贴图对网格的影响程度(黑色是无位移,白色是最大位移)

接下来我们来给平面置换贴图,来增强其立体感

在这里插入图片描述

// 导入置换贴图
const doorHeightTexture = textureLoader.load('./textures/height.jpg')
......
// 材质(给材质添加置换贴图和影响程度)
const material = new THREE.MeshStandardMaterial({
    // map 为颜色贴图
    map: doorColorTexture,
    // alphaMap 为透明纹理
    alphaMap: doorAplhaTexure,
    // 透明
    transparent: true,
    // 渲染两面
    side: THREE.DoubleSide,
    // 增强视图效果
    aoMap: doorAoTexture,
    // 置换贴图
    displacementMap: doorHeightTexture,
    // 影响程度(5cm)
    displacementScale: 0.05
})
......
// 添加第三和第四个参数(平面的宽度分段数,平面高度分段数)
const planeGeometry = new THREE.PlaneBufferGeometry(1, 1, 200, 200)
......
// 稍微更改一下距离,更合适
plane.position.set(1.5, 0, 0)

在这里插入图片描述
在这里插入图片描述


接下来我们来给物体 cube 置换贴图,来增强其立体感

// 我们只需要给物体增加三个参数即可(长宽高的宽度分段数)
const cubeGeometry =  new THREE.BoxBufferGeometry(1, 1, 1, 100, 100, 100)

在这里插入图片描述


三、粗糙度与粗糙度贴图

1、粗糙度

.roughness 材质的粗糙程度。0.0 表示平滑的镜面反射,1.0 表示完全漫反射。默认值为 1.0。如果还提供 roughnessMap,则两个值相乘。

.roughnessMap 该纹理的绿色通道用于改变材质的粗糙度。

设置粗糙度,通过反射间接地观察面的光滑程度

const material = new THREE.MeshStandardMaterial({
    ......
    // 设置粗糙度
    roughness: 0
})

在这里插入图片描述


2、粗糙度贴图

粗糙度贴图,改变门上合页的粗糙度

在这里插入图片描述

// 导入粗糙度贴图
const roughnessTexture = textureLoader.load('./textures/roughness.jpg')
......
const material = new THREE.MeshStandardMaterial({
    ......
    // 设置粗糙度
    roughness: 1,
    // 改变材质的粗糙度
    roughnessMap: roughnessTexture
})

在这里插入图片描述

在这里插入图片描述


四、金属度与金属贴图

.metalness 材质与金属的相似度。非金属材质,如木材或石材,使用 0.0,金属使用 1.0。通常没有中间值。默认是 0.0。

0.0 - 1.0 之间的值可用于生锈金属的外观。

.metalnessMap 该纹理的蓝色通道用于改变材质的金属度。

我们给门上的合页添加金属贴图,让它更有金属的感觉

在这里插入图片描述

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

C-1714262789257)]
[外链图片转存中…(img-mlc34tJZ-1714262789258)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue2和Three.js是两个不同的技术,它们可以一起使用来创建交互式的3D应用程序或动画效果。Vue2是一个用于构建用户界面的JavaScript框架,而Three.js是一个用于在Web上创建3D图形的JavaScript库。 Vue2提供了一个响应式的数据绑定系统,使得开发者可以轻松地处理数据和用户界面之间的交互。它还提供了一些常用的指令和组件,使得构建复杂的应用程序变得更加简单和高效。 Three.js则是一个强大的3D图形库,它提供了一系列的功能和工具,使得在Web上创建和展示3D场景变得容易。它支持多种渲染器,包括WebGL、Canvas和SVG,并提供了丰富的几何体、材质、灯光和动画效果等组件,使得开发者可以创建出令人印象深刻的3D效果。 所以,当你想要在Vue2中使用Three.js时,你可以通过引入Three.js库和Vue2的生命周期钩子来实现。你可以在Vue的created或mounted钩子函数中创建Three.js场景、相机、灯光以及其他需要的组件,并在Vue的updated或destroyed钩子函数中更新或销毁它们。通过这种方式,你可以在Vue的组件中集成Three.js的功能,并与Vue的数据绑定系统无缝配合。 当然,在使用Vue2和Three.js时,你可能还需要额外的学习和掌握一些相关的知识和技巧,比如WebGL的基本概念、Three.js的API文档等。同时,你也可以参考官方文档、教程和示例代码来更好地理解和应用这两个技术。 总之,Vue2和Three.js可以很好地结合在一起,帮助你创建出动态、交互式的3D应用程序或动画效果。但是,请注意在使用时遵循相关的最佳实践和规范,以确保代码的可维护性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值