首页 > 其他分享 >threejs 实现灯光照射模型有阴影

threejs 实现灯光照射模型有阴影

时间:2024-10-30 13:47:08浏览次数:7  
标签:threejs const scene 阴影 照射 renderer new three THREE

“three”: “^0.169.0”
estudi_taller_carles_fontsere.glb:替换你的模型路径请添加图片描述

<template>
  <div class="threejs"></div>
</template>

<script setup>
import { onMounted } from "vue";
import * as THREE from "three";
// 加载器
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
// 控制器
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
import { TransformControls } from "three/examples/jsm/controls/TransformControls.js";

const scene = new THREE.Scene();

const camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
);
camera.position.set(0, 100, 0);

const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
new OrbitControls(camera, renderer.domElement);

const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
directionalLight.position.set(5, 10, 20);
scene.add(directionalLight);

const helper = new THREE.DirectionalLightHelper(directionalLight, 20);
scene.add(helper);

const render = () => {
  if (renderer) {
    renderer.render(scene, camera);
  }
  requestAnimationFrame(render);
};
render();

const transformControls = new TransformControls(camera, renderer.domElement);

const loader = new GLTFLoader();
loader.load("estudi_taller_carles_fontsere.glb", (gltf) => {
  scene.add(gltf.scene);
  transformControls.setMode("rotate");
  transformControls.attach(gltf.scene);
  scene.add(transformControls.getHelper());
});

onMounted(() => {
  document.querySelector(".threejs").appendChild(renderer.domElement);
});
</script>

<style scoped>
.threejs {
  width: 100vw;
  height: 100vh;
}
</style>

标签:threejs,const,scene,阴影,照射,renderer,new,three,THREE
From: https://blog.csdn.net/lcc2001/article/details/143363226

相关文章

  • ThreeJs 中如何实现动画效果
    在ThreeJs中,动画是创建动态3D场景的重要组成部分。本文将介绍如何使用ThreeJs实现基础的动画效果,包括物体的旋转、位置变化和简单的过渡动画。一、创建基础场景在开始动画之前,首先需要创建一个基础的ThreeJs场景。以下是一个简单的场景设置:import*asTHREEfrom'......
  • Threejs 实现3D 地图(05)3d 地图进场动画和地图边缘动画
    3d地图进场特效以及地图边缘动画代码仓库:King/threejs-3d-map地图边缘动画核心代码:constinitBorderPoint=()=>{//获取地图边界的左边(通过https://datav.aliyun.com/portal/school/atlas/area_generator#2.51/104.299012/33.447963获取)letborderPoints3Ar......
  • 阴影
    实时阴影渲染自定义阴影原理平面阴影Pass{Name"Shadow"BlendSrcAlphaOneMinusSrcAlphaStencil//避免阴影重影{Ref255CompNotEqualPassReplace......
  • Comfyui如何快速选出图像的高光和阴影 _ layerstyle节点
    ✨背景comfyui中,除了AI图像生成本身以外,还会有很多图像处理的工作要做,比如说调整色阶、饱和度,或者还原商品细节。在最近探索的一个场景中,需要将图像中的高光部分提取出来做光源模拟,发现layerstyle这个节点组中包含了这个功能,所以简单分享一下。✨layerMask:ShadowHighlight......
  • ThreeJS入门(123):THREE.Skeleton 知识详解,示例代码
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第123篇入门文章......
  • vue3简单使用threejs立方缓冲几何体(BoxGeometry)
    文章目录前言一、安装three二、使用步骤1.导入three、建立场景、相机和渲染器2.添加立方体3.渲染循环三、其他1.轨道控制器OrbitControls和坐标轴辅助对象AxesHelper2.GUI创建可交互的控件(点击全屏+退出全屏)3.监听窗口的变化执行一些重置操作四、完整代码五、效......
  • 将threejs的官方文档部署到本地,遇到的问题及解决方法
    问题:官方文档浏览速度慢。 1.下载https://threejs.org/官网首页左侧,点击“download”下载  2.得到压缩包:three.js-master.zip解压到本地 3. 部署用VSCode打开解压后的文件夹运行命令:npminstall运行命令:npmrundev  报错:  问了一下AI,得到如何解......
  • 给控件添加阴影效果SystemDropShadowChrome
    引入命名空间 xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"给控件添加引用,这个性能比较好。例如给Combobox下拉框添加引用效果<--!其他代码--><Popupx:Name="PART_Popup"AllowsTransparency="true"Grid.Colum......
  • ThreeJS入门(099):THREE.ArcCurve 知识详解,示例代码
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第100篇入门文章......
  • 上传本地pcd文件,并用threejs渲染
    页面<template><div><inputtype="file"@change="handleFileUpload"accept=".pcd"/><inputtype="file"@change="changeFile"/><div@click="stringToFileClick&......