03-雾化

2023-11-03

const fog = new THREE.Fog(color, near, far);
  • color:颜色,用于设置雾的颜色,以十六进制表示。
  • near:近平面,处于这个距离之内的物体将被完全雾化。
  • far:远平面,处于这个距离之外的物体将不受雾化影响。
<template>
  <div>
    <canvas ref="container"
            height="700"
            width="1400"></canvas>
  </div>
</template>

<script setup>
import { onMounted, ref } from "vue";
import { THREE, CameraControls } from "@/global/three";

const container = ref(null);
// 创建渲染器
const createRenderer = () => new THREE.WebGLRenderer({ canvas: container.value, antialias: true });
// 创建相机
const createCamera = (options = {}) => {
  const { fov, aspect, near, far, positions, eyesP } = {
    fov: 40,
    aspect: 2,
    near: 0.1,
    far: 1000,
    positions: [0, 50, 0],
    eyesP: [0, 0, 0],
    ...options
  }
  const camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
  camera.position.set(...positions);
  camera.lookAt(...eyesP)
  return camera
}

onMounted(() => {
  const clock = new THREE.Clock();
  const renderer = createRenderer();
  const camera = createCamera({
    positions: [0, 0, 20]
  });
  const controls = new CameraControls(camera, container.value)
  const scene = new THREE.Scene();

  // 创建一个立方体
  const cubeGemometry = new THREE.BoxGeometry(2, 2, 2)
  const cubeMaterial = new THREE.MeshLambertMaterial({ color: 0xff0000, wireframe: false, side: THREE.DoubleSide })
  const cube = new THREE.Mesh(cubeGemometry, cubeMaterial)
   // 让三维物体 产生阴影,使用平面接收阴影
  cube.castShadow = true;
  scene.add(cube)

  // 创建一个地面用于接收阴影
  const planeGemetry = new THREE.PlaneGeometry(20, 30)
  const planeMaterial = new THREE.MeshPhongMaterial({ color: 0xffffff })
  const plane = new THREE.Mesh(planeGemetry, planeMaterial)
  plane.rotateZ(20);
  plane.position.z = -10;
  plane.position.x = 3;
  // 使用平面接收阴影
  plane.receiveShadow = true;
  scene.add(plane);

  // 添加灯光
  const spotLight = new THREE.SpotLight(0xffffff);
  spotLight.position.set(-10, 10, 90);
   // 设置灯光开启阴影
  spotLight.castShadow = true;
  scene.add(spotLight);

  renderer.shadowMap.enabled = true;

  // 添加雾化
  const fog = new THREE.Fog(0xffffff, 0.1, 50);
  scene.fog = fog;

  function render () {
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;
    const delta = clock.getDelta();
    controls.update(delta);
    renderer.render(scene, camera)
    requestAnimationFrame(render)
  }
  requestAnimationFrame(render)
});
</script>

<style lang="scss" scoped></style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

03-雾化 的相关文章

  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 在网页上的文本框中键入内容时删除所有空格

    我如何在用户打字时即时删除输入到文本框中的空格 function var txt myTextbox var func function txt val txt val replace s g txt keyup func blur fun
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 使用 CryptoJS 更改密钥 [重复]

    这个问题在这里已经有答案了 我正在使用 CryptoJS 来加密和解密文本 在这里 我只是获取消息并显示加密和解密消息 我使用DES算法进行加密和解密 这是我的 HTML 文件
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • C++新特性27_线程thread的使用(重点看C++11对线程的封装使用、线程标准库、多线程的核心:回调函数创建新的线程并作为线程的起点、 windows下经典的线程的写法、C++11对线程的封装)

    本篇介绍新的篇章 主要介绍线程与同步的知识 早期C 是没有考虑多线程的 随着语言的发展 C 中增加了线程与同步的相关标准库 总结 C 中对线程进行了封装创建新的线程 使用回调函数作为新的线程下的起点 C 新特性27 线程thread的使用
  • 正则表达式 以字符串开头_干货-Shell编程之正则表达式

    正则表达式 一 正则表达式的定义 正则表达式又称正规表达式 常规表达式 在代码中常简写为 regex regexp 或 RE 1 正则表达式是使用单个字符串来描述 匹配一系列符合某个句法规则的字符串简单来说 是一种匹配字符串的方法 通过一些
  • 运行import pygame时报错ModuleNotFoundError: No module named 'pygame'

    运行import pygame时报错ModuleNotFoundError No module named pygame 报错的原因存在两个 第一 python里面的pygame的package安装的版本和位置不对 第二 pycharm里面
  • 画板子遇到的一些问题

    1 用通信芯片比如max485等和主芯片相连接时 负责通信的引脚如何连接 是同名的相连接还是异名连接呢 目前看是同名相连 例如主芯片的rxd 接收 输入 连接通信模块的rxd 接收 输入 但是主要还是要看芯片手册 对每个引脚会有详细说明 定
  • C# 的算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符(学习心得 8)

    内置数学 逻辑运算符分类 算数运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 超级小白友好 讲解C 基础 每集5分钟轻松学习 拒绝从入门到放弃 超级小白友好 讲解C 基础 每集5分钟轻松学习 拒绝从入门到放弃 文章目录 一
  • USB学习系列之二——USB设备的插入检测

    1 USB的插入检测机制 USB端口的D 和D 均用一个15k的电阻接地 当无设备接入时 均处于低电平 在设备端在D 表示高速设备或者全速设备 或者D 表示低速设备 接了一个1 5k的上拉电阻到 3 3v 一旦将设备接入 USB端口的D 或
  • 基于redis实现分布式锁

    目录 基本实现 编辑防死锁 防误删 使用lua保证删除原子性 可重入锁 加锁脚本 解锁脚本 代码实现 使用及测试 自动续期 总结 基本实现 借助于redis中的命令setnx key value key不存在就新增 存在就什么都不做 同时有
  • 2023最新信息安全专业毕设题目推荐汇总

    0 简介 毕业季马上就要开始了 不少同学询问学长网安专业选题以及开题相关的问题 今天跟大家分享信息安全毕设选题 最新的信息安全 网络安全 专业毕设选题 难度适中 适合作为毕业设计 大家参考 学长整理的题目标准 相对容易 工作量达标 题目新颖
  • vue中调取支付宝支付接口,后台返回form表单前端处理

    前言 在项目中 支付功能是一个常见的功能 调用支付宝时 后段给我们的是一个form的富文本内容 分享下使用方法 方法 this api abc then res gt res data data默认是我们拿到的form代码 const di
  • AD设置板框内布线禁止区

    这个功能还可用于整体板框扩大 缩小
  • qwt6.0.0交叉编译,在mini2440完美运行

    qwt6 0 0交叉编译 在mini2440完美运行 QWT简介 QWT 全称是Qt Widgets for Technical Applications 是一个基于LGPL版权协议的开源项目 可生成各种统计图 它为具有技术专业背景的程序提
  • Python3 获取本机所有IP地址

    版权声明 更多最新原创文章请访问 最新原创主页 更多最全原创文章请访问 更多原创主页 先上代码 coding utf 8 Time 2018 2 10 18 24 Author 蛇崽 Email 643435675 QQ com File
  • vue2下npm安装国际化i18n包报错

    如题 我项目是vue2 在terminal控制台输入以下指令安装时报错 npm install vue i18n save 原因 在vue2环境下 默认安装 npm install vue i18n 的版本是 vue i18n 9 2 2
  • 【OpenCV图像处理】1.22 像素值映射

    相关理论 什么是像素重映射 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去 形成一张新的图像 g x y
  • 电子商务计算机考试,电子商务师考试电子商务训练试题

    电子商务师考试电子商务训练试题 导语 电子商务师是指利用计算机技术 网络技术 通过专业的网络商务平台等现代信息技术 帮助商家与顾客或商家与商家之间从事各类商务活动或相关工作的人员 跟着小编一起来看看相关试题吧 1 确定事物之间异同的形式逻辑
  • Ingress配置跨域(服务包含websocket)

    nginx ingress默认是支持websocket 不需要添加配置 如果websocket的端口与当前服务不一致 则需要在rules中配置对应的路径 具体本文不体现 跨域主要配置有 nginx ingress kubernetes io
  • 【Java】maven-shaded-plugin超详细详解

    一 总体介绍 maven shaded plugin提供了两大基本功能 将依赖的jar包打包到当前jar包 常规打包是不会将所依赖的jar包打进来的 对依赖的jar包进行重命名 用于类的隔离 创建一个Shaded JAR maven sha
  • Opencv 入门(三)

    文章目录 图像梯度 Sobel算子 Scharr 算子 Laplacian算子 Canny边缘检测 图像金字塔 高斯金字塔 拉普拉斯金字塔 轮廓检测 画图函数 轮廓特征 面积 周长 轮廓近似 多边形 边界矩形 外接圆 图像梯度 Sobel算
  • 来做一个麦克纳姆轮吧!!

    想玩全向小车么 想搭建一个移动底盘么 想满足中二病的创造欲么 想 那么为什么不自己做一个麦克纳姆轮呢 自己动手丰衣足食 0 准备材料 3D打印机一台 打印耗材 直径2mm 长度60mm的铁轴 这种玩具模型里用的小铁轴刚好可以用来当麦克纳姆轮
  • 03-雾化

    const fog new THREE Fog color near far color 颜色 用于设置雾的颜色 以十六进制表示 near 近平面 处于这个距离之内的物体将被完全雾化 far 远平面 处于这个距离之外的物体将不受雾化影响