首页 > 其他分享 >三维基础模板

三维基础模板

时间:2023-12-28 10:44:55浏览次数:36  
标签:const 基础 三维 THREE camera renderer new scene 模板



// 引入three.js
import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'; //

export const threeDimensional = (file) => {
    const scene = new THREE.Scene();

    //创建物体与材质
    const geometry = new THREE.BoxGeometry(100, 100, 100);
    const material = new THREE.MeshLambertMaterial({
        color: 0x00ffff,
        transparent: true,
        opacity: 0.5,
    });
    const mesh = new THREE.Mesh(geometry, material);

    scene.add(mesh);


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



     // 创建点光源
     const pointLight = new THREE.PointLight(0xffffff, 1, 100)
     pointLight.position.set(80, 80, 80);//偏移光源位置,观察渲染效果变化
     pointLight.intensity = 3810;//光照强度
     pointLight.distance = 3000;// 光的衰减
     pointLight.decay = 2;//光照强度
     scene.add(pointLight);

      // 环境光
    const light = new THREE.AmbientLight(0x404040, 4); // 柔和的白光
    scene.add(light);

    // 平行光
    const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
    directionalLight.position.set(50, 50, 50)
    scene.add(directionalLight);

    let Width = window.innerWidth 
    let Height = window.innerHeight

    //渲染器和相机
    const camera = new THREE.PerspectiveCamera(30, Width / Height, 0.1, 3000);
    camera.position.set(800, 800, 800); //相机在Three.js三维坐标系中的位置
    camera.lookAt(0, 0, 0); //相机观察目标指向Three.js坐标系原点

    //创建渲染器
    const renderer = new THREE.WebGLRenderer({
        antialias: true,  //设置抗锯齿
    });
    renderer.setSize(window.innerWidth, window.innerHeight);
    //渲染的宽高
    renderer.setPixelRatio(window.devicePixelRatio)
    //告诉three.js浏览器的像素比,防止模糊
    renderer.setClearColor(0x000000)
    // 设置渲染器的背景色
    document.getElementById("app").appendChild(renderer.domElement);
    //把渲染器插入到那个标签下

    // 设置相机控件轨道控制器OrbitControls
    const controls = new OrbitControls(camera, renderer.domElement);
    // 修改相机指向的位置
    controls.target.set(-14, -24, 10)

    // 渲染循环
    function animate() {
        controls.update()
        renderer.render(scene, camera);
        requestAnimationFrame(animate);
    }
    animate();
    // 画布跟随窗口变化
    window.onresize = function () {
        renderer.setSize(Width, Height);
        camera.aspect = Width / Height;
        camera.updateProjectionMatrix();
    }
}

 

标签:const,基础,三维,THREE,camera,renderer,new,scene,模板
From: https://www.cnblogs.com/yuluochengxu/p/17932219.html

相关文章

  • 【scikit-learn基础】--『监督学习』之 LASSO回归
    LASSO(LeastAbsoluteShrinkageandSelectionOperator)回归模型一般都是用英文缩写表示,硬要翻译的话,可翻译为最小绝对收缩和选择算子。它是一种线性回归模型的扩展,其主要目标是解决高维数据中的特征选择和正则化问题。1.概述在LASSO中,通过使用L1正则化项,它能够在回归系数中......
  • C++ --- 函数模板
    函数模板C++的一种编程思想称为泛型编程,主要利用的技术就是模板。编写与类型无关的调用代码,是代码复用的一种手段。 模板是泛型编程的基础。C++提供两种模板机制:函数模板和类模板。函数模板:建立一个通用的函数,它用到的参数类型可以不确定,用一个虚拟类型替代。等到函数调用的时......
  • docker 基础
    Docker1安装卸载原有的dockersudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine设置仓库链接sudoyuminstall-yyum-utilssudoyum-confi......
  • Java基础2
    1.抽象类在Java中,抽象类(AbstractClass)是一种特殊类型的类,它不能被实例化,而是用于被其他类继承。抽象类可以包含抽象方法和具体方法。以下是关于抽象类的一些关键点:定义抽象类:使用abstract关键字定义抽象类。不能实例化抽象类,即不能使用new关键字创建抽象类的......
  • 【Cpp 语言基础】 string 类型进阶使用
    大纲:1.特殊的初始化方式2.获取子串3.与<algorith>中对应的成员函数 ”串“类型类似于数组类型(C语言的字符串就是字符数组)。但是有一点不同之处,就是串经常作为一个整体才有实际的”意义“,而数组每个单元都有其”意义“。因此,“串”的操作中,很大部分是“串”的整体、局部......
  • java基础语法API之GUI图形化界面2
    一:概述在1中,已经对GUI图形化的基础知识做了个概述,2中主要以例子为载体说明。并且介绍时间监听机制二:具体说明<1>猜数字//创建窗体对象JFramejf=newJFrame();jf.setTitle("猜数字");jf.setSize(400,300);jf.set......
  • C# 中关于 T 泛型【C# 基础】
    C#中关于T泛型【C#基础】 阅读目录〇、前言一、泛型类型参数和运行时中的泛型1.1泛型类型参数1.2泛型类型的命名1.3运行时中的泛型1.4为什么要约束类型参数?二、泛型类三、泛型接口四、泛型方法五、泛型与数组六、泛型委托七、小小的总结回到顶......
  • DateTime 相关的操作汇总【C# 基础】
    DateTime相关的操作汇总【C#基础】 阅读目录〇、前言一、C#中的本机时间以及格式化1.1单字母格式化日期时间值1.2日期时间精准格式化1.3日期时间的加、减操作1.4取日期时间的单个值二、北京时间与协调世界时2.1时间概念的分类2.1.1协调世界时(UTC)2.......
  • Golang基础(一)
    粗略了解Golang的核心特性Go语言的特性一、并发编程不同于传统的多进程或多线程,golang的并发执行单元是一种称为goroutine的协程。其在语言级别提供关键字:go——用于启动协程。chan——golang中用于并发的通道,用于协程的通信。select——golang提供的多路复用机制。close......
  • C# 9.0 添加和增强的功能【基础篇】
    C#9.0添加和增强的功能【基础篇】 阅读目录一、记录(record)with表达式二、仅限Init的资源库三、顶级语句四、模式匹配增强功能五、模块初始值设定(ModuleInitializer)六、可以为null的引用类型规范七、目标类型的new表达式八、扩展分部方法九、静态匿名......