首页 > 其他分享 >web实践学习1

web实践学习1

时间:2023-01-24 18:23:02浏览次数:60  
标签:web const BoxBufferGeometry 实践 THREE 学习 Mesh var new

20201303张奕博 2023.1.24

页面结构

Rabbit Craft Go 页面的整体结构如下,其中 canvas.webgl 是用于渲染场景的容器、剩余标签都是一些装饰元素或提示语。

W/↑ A/←S/↓D/→ space

W: 行走 S: 停止 A: 向左转 D: 向右转 空格键: 跳跃

three.js odessey

RABBIT CRAFT GO!

场景初始化 场景初始化过程中,我们引入必需的开发资源,并初始化渲染场景、相机、控制器、光照、页面缩放适配等。其中外部资源的引入,其中 OrbitControls 用于页面镜头缩放及移动控制;TWEEN 和 Animations 用于生成镜头补间动画,也就是刚开始时浮岛由远及近的镜头切换动画中效果;Island、Carrot、Rabbit、Waterfall 等是用来构建三维世界的类。为了使场景更加卡通化,使用了 THREE.sRGBEncoding 渲染效果。场景中添加了两种光源,其中 THREE.DirectionalLight 用来生成阴影效果。

import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
import { TWEEN } from "three/examples/jsm/libs/tween.module.min.js";
import Animations from './environment/animation';
import Island from './environment/island';
import Carrot from './environment/carrot';
import Rabbit from './environment/rabbit';
import Waterfall from './environment/waterfall';

// 初始化渲染器
const canvas = document.querySelector('canvas.webgl');
const renderer = new THREE.WebGLRenderer({
canvas: canvas,
antialias: true,
alpha: true
});
renderer.setSize(sizes.width, sizes.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
renderer.outputEncoding = THREE.sRGBEncoding;
renderer.shadowMap.enabled = true;
renderer.shadowMap.needsUpdate = true;

// 初始化场景
const scene = new THREE.Scene();

// 初始化相机
const camera = new THREE.PerspectiveCamera(60, sizes.width / sizes.height, 1, 5000)
camera.position.set(-2000, -250, 2000);

// 镜头控制器
const controls = new OrbitControls(camera, renderer.domElement);
controls.target.set(0, 0, 0);
controls.enableDamping = true;
controls.enablePan = false;
controls.dampingFactor = 0.15;

// 页面缩放事件监听
window.addEventListener('resize', () => {
sizes.width = window.innerWidth;
sizes.height = window.innerHeight;
// 更新渲染
renderer.setSize(sizes.width, sizes.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2))
// 更新相机
camera.aspect = sizes.width / sizes.height;
camera.updateProjectionMatrix();
});

// 光照
const ambientLight = new THREE.AmbientLight(0xffffff, 1);
scene.add(ambientLight);
const directionalLight = new THREE.DirectionalLight(0xffffff, 1.5);
scene.add(directionalLight);

创建浮岛
如以下

标签:web,const,BoxBufferGeometry,实践,THREE,学习,Mesh,var,new
From: https://www.cnblogs.com/sanfeng-ooo/p/17066236.html

相关文章

  • ABB 800XA学习笔记73:硬件组态7
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记73:硬件结构7_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍,以免丢失继续学习6.5在线功能6.5.1......
  • ABB 800XA学习笔记74:硬件结构8-软控制器的使用
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记74:硬件结构8-软控制器的使用_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里我也记录一遍,以免丢失继续学习6.......
  • Informer源码学习记录之 "模型搭建build_model"
    一、初始化1.代码结构main_informer.py:  exp=Exp(args)#setexperimentsexp_basic.py:classExp_Informer(E......
  • ABB 800XA学习笔记70:硬件组态4
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记70:硬件结构4_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍,以免丢失继续学习,本章有24页,不算多。6......
  • ABB 800XA学习笔记71:硬件组态5
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记71:硬件结构5_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍,以免丢失今晚最后一篇。6.4应用下载......
  • ABB 800XA学习笔记68:硬件组态2
    这篇血洗闭集我在新浪博客记录过,地址是来自金沙江的小鱼_新浪博客(sina.com.cn)在这里我也记录一遍,以免丢失睡了一觉,接着学习。6.2硬件库硬件文件夹包含硬件类型,这些......
  • ABB 800XA学习笔记69:硬件组态3
    这一篇学习笔记我在新浪博客记录过,地址是ABB800XA学习笔记69:硬件组态3_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里我爱记录一遍,以免丢失继续学习。6.3与AC800M控......
  • TWebSocketAsyncServer使用
    TWebSocketAsyncServer使用TWebSocketAsyncServer是MORMOT2异步WEBSOCKET服务端。///<author>cxg2023-1-24</author>unitUnit1;interfaceusesmormot.net.ht......
  • JavaScript学习笔记—闭包
    1.定义闭包就是能访问到外部函数作用域中变量的函数2.什么时候使用当需要隐藏一些不希望被别人访问的内容时就可以使用闭包3.构成要件(1)函数的嵌套(2)内部函数要引用......
  • 杨表学习笔记
    杨表学习笔记简介杨表(Youngtableau)是一种常用于表示论和舒伯特演算中的组合对象,在数学中被用于对称群和一般线性群的研究。阿尔弗雷德·杨(AlfredYoung)于1900年提出了......