IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 1.threejs 创建一个场景 -> 正文阅读

[游戏开发]1.threejs 创建一个场景

// 场景、相机和渲染器,这样我们就能透过摄像机渲染出场景

// 场景
var scene = new THREE.Scene();

// 透视摄像机PerspectiveCamera
// 第一个参数75 视野角度(FOV field angle of view) 视野角度就是无论在什么时候,
// 你所能在显示器上看到的场景的范围,它的值是一个角度
// 第二个值是长宽比(aspect ratio)。 也就是你用一个物体的宽除以它的高的比值。
// 比如说,当你在一个宽屏电视上播放老电影时,可以看到图像仿佛是被压扁的。
// 接下来的两个值是远剪切面和近剪切面。
// 也就是说当物体所在的位置比摄像机的远剪切面远或者所在位置比近剪切面近的时候,该物体超出的部分将不会被渲染到场景中。
var camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
);

// 渲染器
var renderer = new THREE.WebGLRenderer();

// setSize渲染器宽高
renderer.setSize(window.innerWidth, window.innerHeight);
// 可以如下将第三个参数设置为false,保持长宽,但是分辨率减半
// renderer.setSize(window.innerWidth / 2, window.innerHeight / 2, false);

// 我们将renderer(渲染器)的dom元素(renderer.domElement)添加到我们的HTML文档中
document.body.appendChild(renderer.domElement);

// BoxGeometry(立方体)对象. 这个对象包含了一个立方体中所有的顶点(vertices)和面(faces)
var geometry = new THREE.BoxGeometry();

// 一种材质
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });

// Mesh(网格)包含一个几何体以及作用在此几何体上的材质,我们可以直接将网格对象放入到我们的场景中,并让它在场景中自由移动
var cube = new THREE.Mesh(geometry, material);

// scene.add(),物体将会被添加到(0,0,0)坐标
scene.add(cube);

// 移动摄像机。使其可以观察到立方体
camera.position.z = 5;

// 渲染循环 这段代码每帧都会执行(正常情况下是60次/秒)
var animate = function () {
  // 虽然的确可以用setInterval做渲染循环,但是,requestAnimationFrame有很多的优点
  // 最重要的一点或许就是当用户切换到其它的标签页时,它会暂停,因此不会浪费用户宝贵的处理器资源,也不会损耗电池的使用寿命
  requestAnimationFrame(animate);

  // 旋转立方体
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;

  renderer.render(scene, camera);
};

animate();

?当fov缩小时(红线),屏幕上的物体会变大

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:58:26  更:2022-03-15 23:00:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 16:13:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码