创建一个有阴影的threejs三维几何体

import * as THREE from "three"
import {
    OrbitControls } from 'three/examples/jsm/controls/OrbitControls'

const width = window.innerWidth;
const height = window.innerHeight;

//创建场景
const scene = new THREE.Scene();
scene.background = new THREE.Color('#65762c'); 

//创建几何体
const geometry = new THREE.SphereGeometry(50,50,50)
const material = new THREE.MeshLambertMaterial({
   
	color:0x00ffff,
})
const mesh = new THREE.Mesh(geometry,material);
scene.add(mesh)

//创建平行光
const dirLight2 = new THREE.DirectionalLight(0xFFFFFF, 1);
dirLight2.position.set(100,100,100);
scene.add(dirLight2);

//添加环境光
const ambient = new THREE.AmbientLight(0xffffff, 1)
scene.add(ambient)

//光源辅助观察
// const pointLightHelper = new THREE.DirectionalLightHelper(dirLight2, 2)
// scene.add(pointLightHelper)

//AxesHelper 辅助观察坐标系
// const axesHelper = new THREE.AxesHelper(100);
// scene.add(axesHelper)

//相机
const camera = new THREE.PerspectiveCamera(45,width/height,1,1000)
//相机在three.js三维坐标系中的位置,根据需要设置相机位置具体值
camera.position.set(100,200,250);
//相机观察目标指向three.js坐标系原点,相机的位置
camera.lookAt(0,0,0)

//创建渲染器对象
const renderer = new THREE.WebGLRenderer();
//设置three.js渲染区域的尺寸
renderer.setSize(width,height);

//three.js执行渲染命令会输出一个canvas画布
document.body.appendChild(renderer.domElement);

//循环渲染
function render(){
   
	renderer.render(scene,camera);
	requestAnimationFrame(render);
}

render();

//设置相机轨道控制器
const controls = new OrbitControls(camera, renderer.domElement);

//如果OrbitControls改变了相机参数,重新调用渲染器渲染三维场景,监听键盘、鼠标事件
controls.addEventListener('change',function(){
   
  renderer.render(scene,camera);  //执行渲染操作
  // console.log('camera.position',camera.position)
})

请添加图片描述

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 08:28:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 08:28:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 08:28:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 08:28:03       20 阅读

热门阅读

  1. C# DI依赖注入

    2023-12-12 08:28:03       37 阅读
  2. Linux中tar命令详解

    2023-12-12 08:28:03       29 阅读
  3. 选择排序和堆排序

    2023-12-12 08:28:03       36 阅读
  4. 个人博客搭建保姆级教程-Nginx篇

    2023-12-12 08:28:03       45 阅读
  5. 【Hadoop】修改YARN配置文件

    2023-12-12 08:28:03       31 阅读
  6. MySQL执行语句 Table ‘mysql.servers‘ doesn‘t exist

    2023-12-12 08:28:03       38 阅读
  7. go-zero接口签名

    2023-12-12 08:28:03       47 阅读
  8. SQL数据库-客观题 复习

    2023-12-12 08:28:03       37 阅读
  9. IO 流

    2023-12-12 08:28:03       45 阅读
  10. 第13节:Vue3 声明反应状态ref()

    2023-12-12 08:28:03       44 阅读
  11. 八大排序算法【上】

    2023-12-12 08:28:03       36 阅读
  12. Vue3.3.4中watch无法监测props的更改

    2023-12-12 08:28:03       40 阅读