import * as THREE from '../libs/build/three.module.js';

import { OrbitControls } from '../libs/jsm/controls/OrbitControls.js'

import { CSS2DRenderer, CSS2DObject } from '../libs/jsm/renderers/CSS2DRenderer.js'

// 变量声明
let scene,camera,renderer,controls,load

// 场景实例化

scene=new THREE.Scene()

// 相机实例化

camera=new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 200)

// 相机位置

camera.position.set(20,20,20)

// 相机宽高比例

camera.aspect = window.innerWidth / window.innerHeight;

// 更新相机投影

camera.updateProjectionMatrix();

// 相机加入场景

scene.add(camera);

// 渲染器

renderer=new THREE.WebGLRenderer({

// 设置抗锯齿

antialias: true,

// 对数深度缓冲区

logarithmicDepthBuffer: true,

})

// 渲染器宽高

renderer.setSize(window.innerWidth , window.innerHeight)

// 渲染器颜色

 renderer.setClearColor(0xeeeeee,1.0);

// 根据视口调整大小

window.addEventListener("resize", () => {

camera.aspect = window.innerWidth / window.innerHeight;

camera.updateProjectionMatrix();

renderer.setSize(window.innerWidth, window.innerHeight);

});

// 渲染器加入页面

document.body.append(renderer.domElement)

// 控制器实例化

controls=new OrbitControls(camera,renderer.domElement)

// 渲染函数

function render(params) {

renderer.render(scene,camera)

// 引擎自动更新渲染器

requestAnimationFrame(render);

}

// 创建点光源

const dirLight = new THREE.SpotLight(0xffffff);

dirLight.position.set(0, 2, 10);

dirLight.intensity = 5;

dirLight.castShadow = true;

scene.add(dirLight)

// 创建环境光

  const aLight = new THREE.AmbientLight(0xffffff)
aLight.intensity = 3
scene.add(aLight)

render()

// 生成一个路面

load=new THREE.BoxGeometry( 20, 40, 0.8 );

const loadmaterial = new THREE.MeshBasicMaterial( {color: 0x999999} );

const loadMain = new THREE.Mesh(load, loadmaterial);

loadMain.rotation.x = -Math.PI / 2;

loadMain. receiveShadow = true;

scene.add(loadMain)

three.js基础用法的更多相关文章

  1. js基础用法 ,基础语法

    js用法: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head& ...

  2. JS基础用法-向数组指定位置插入对象

    在做省市区三级联动的时候,需要在省市区默认位置放上请选择字样. 由于后台的API接口返回的没有请选择字样,那么就需要给返回的数组手动增加请选择 代码如下 // 原来的数组 var array = [& ...

  3. js基础用法1

    click() 对象.click() 使对象被点击.closed 对象.closed 对象窗口是否已封闭true/falseclearTimeout(对象) 清除已设置的setTimeout对象cle ...

  4. JS基础篇--sort()方法的用法,参数以及排序原理

    JS基础篇--sort()方法的用法,参数以及排序原理   sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点.语法:arrayObject.sort( ...

  5. js基础到精通全面教程--JS教程

    适合阅读范围:对JavaScript一无所知-离精通只差一步之遥的人 基础知识:HTML JavaScript就这么回事1:基础知识 1 创建脚本块 1: <script language=”J ...

  6. js基础篇——call/apply、arguments、undefined/null

    a.call和apply方法详解 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 ...

  7. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  8. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

  9. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

  10. js基础--浏览器标签页隐藏或显示状态 visibility详解

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 在工作中我们可能会遇到这样的需求,当浏览器切换到别的标签页或着最小化时,我们需要暂停页面上正在播放的视频或者音乐,这个需求 ...

随机推荐

  1. 针对单一key加读写锁

    一.什么是读写锁 读写锁是JDK1.5提供的一个工具锁,适用于读多写少的场景,将读写分离,从而提高并发性. 二.读写锁的特点 读锁是共享锁,写锁是排他锁,读锁和写锁不能同时存在: 读锁不能升级为写锁: ...

  2. 通过ESP8266WiFi模块调用“心知天气”接口 获取天气信息

    在分析代码之前,首先介绍 ArduinoJson 库的安装及"心知天气"的ID申请 一.安装 ArduinoJson 库 进入 Arduino 开发环境后,选择菜单栏-->工 ...

  3. Flink常见问题解决记录

    1.Hardlink from files of previous local stored state might cross devices 开启了state.backend.local-reco ...

  4. GridView.RowCellClick Event

    Fires when a user clicks a data cell. If data is editable and the ColumnViewOptionsBehavior.EditorSh ...

  5. 「SOL」行列式 (模拟赛)

    1. 题面 有一个大小为 \(n\) (\(n\le10^6\))的方阵 \(A\),给定 \(d_1,d_2,d_3,\dots,d_n\),\((p_2,b_2,c_2),(p_3,b_3,c_3 ...

  6. js导出数据为excel表

    1.接口数据后端写, 2.代码如下: var params={ "filters":[ {"propertyCode":"sequenceNo&quo ...

  7. Python的入门学习Day 14~15——form”夜曲编程“

    Day 14 time: 2021.8.11. ​ 原文再续,输接上一回.在数据结构之上,我们又开启了新一章"循环"的学习.而今天,我们首先学习了"for"循环 ...

  8. 移动web_平面转换

    平面转换 平面 平移 旋转 缩放 概念:使用transform属性实现元素的位移.旋转.缩放等效果 注意点:行内元素所有的平面转换是没有效果的 平面: 平面转换的平面指的是二维平面(2D)只有X和Y轴 ...

  9. 路飞之-后台日志封装-前后端分离的rbac项目演示-全局异常处理封装-封装Response-luffy数据库创建-软件开发模式-User模块用户表-django的配置文件-开启media访问

    目录 路飞之-后台日志封装-前后端分离的rbac项目演示-全局异常处理封装-封装Response-luffy数据库创建-软件开发模式-User模块用户表-django的配置文件-开启media访问 今 ...

  10. 整合Junit5

    1.引入依赖 <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-j ...