【ThreeJs 初学习】实现简单的场景渲染

news2024/12/22 17:53:09

简单的场景渲染

从今天开始进军 3D相关的技术。第一是因为项目需要,第二是因为年中的KPI目标。刚开始分享的内容会相对基础,望各位谅解。


根据官网的文档整理出一份API文档, 地址是:ThreeJs 官网文档,其目的还是为了方便查阅

1. 执行流程

在这里插入图片描述

2. 代码实现

// 此处表示导入three
import * as  THREE from 'three';

// 学习目标:了解threeJs 基础内容

// 1. 创建一个场景
const scene = new THREE.Scene();

// 2. 创建一个相机
const camera = new THREE.PerspectiveCamera(75, window.innerWidth/ window.innerHeight, 0.1, 1000);
// 表示相机位置
camera.position.set( 0, 0, 10 );
scene.add( camera );

// 3. 添加物体
const geometry = new THREE.BoxGeometry( 1, 1, 1 ); // 表示几何体
const material  = new THREE.MeshBasicMaterial({color: 0x00ff00}); // 表示材质
const cube = new THREE.Mesh(geometry, material); // 根据几何体 以及材质 创建物体
scene.add( cube );

// 4. 初始化渲染器
const renderer = new THREE.WebGL1Renderer();
renderer.setSize( window.innerWidth, window.innerHeight ); // 设置渲染的尺寸大小

// 将canvas 添加到html中
document.body.appendChild(renderer.domElement);

// 通过渲染器 通过相机将场景进行渲染
renderer.render( scene, camera );

    1. 创建场景,场景是一切的基础,场景可以包裹相机,物体等
    1. 创建相机,因为如果是3D的话,始终需要以第三者的角度看场景,所以相机就是指场景中能看到的部分
    • 2.1 因为相机本身继承于Object3D. 所以给相机设置位置的方法positon.set 其实是来自父类的。
    1. 添加物体
    1. 初始化渲染器,其实渲染器的本质是一个canvas的。可以通过代码renderer.domElement 来查看。所以我们渲染的目的就是为了将canvas添加到html中
    1. 通过渲染器 来渲染场景 以及相机

上述代码的源码地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

移动应用测试流程

以下是这段时间测试手机app的流程总结。 从需求阶段开始介入。参加软件功能设计,在软件编码之前,在仍有可能大的设计变更的时候,积极参加软件的计划阶段,这会帮助我们了解正被考虑的折衷和权衡从而了解客户需要的产品的雏形。在此…

Docker部署oracle -11g

Docker部署oracle -11g 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g启动容器 docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g执行 docker ps 命令确认容器启动成功 进行配置 &#xf…

蓝桥杯 分巧克力

题目描述 儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NN 块巧克力,其中第 ii 块是 H_i \times WiHi​Wi 的方格组成的长方形。为了公平起见, 小明需要从这 NN 块巧克力中切出 K 块巧克力分给小朋友们。切…

读书笔记:神经网络的学习 train_neuralnet.py ← 斋藤康毅

提醒:本例涉及到三个 Python 文件,即 two_layer_net.py,train_neuralnet.py,mnist.py 等。 显然,要进行神经网络的学习,必须先构建神经网络。 因此,本文先构建了一个2层神经网络。代码详见 two_…

玩转代码|解决Chrome浏览器内置谷歌翻译功能无法使用问题!

最近这几天在使用Chrome浏览器的内置谷歌翻译功能时,总是一直停留在不翻译的状态,一开始我还以为是网络波动过几天就好了,过了好几天依旧是这样。去看了新闻才知道谷歌翻译已经退出了中国市场。根据TechCrunch的消息称,谷歌发言人…

我本芬芳

我本芬芳推荐语: 读完前几章,一边为惠才遇人不淑感到遗憾,又不觉想起自己的童年种种,书中简单的三言两语,却又不断地在触动我。我不由得想到上世纪六七十年代的女子们,也就是我的奶奶外婆们,将自…

我的周刊(第076期)

我的信息周刊,记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。🎯 项目python-wechaty[1]Wechaty 是一个开源聊天机器人框架…

力扣刷题|226.翻转二叉树、101. 对称二叉树

文章目录LeetCode 226.翻转二叉树题目链接🔗思路递归法迭代法LeetCode 101. 对称二叉树题目链接🔗思路递归法迭代法相关题目LeetCode 226.翻转二叉树 题目链接🔗 LeetCode 226.翻转二叉树 思路 这道题目使用前序遍历和后序遍历都可以&…

PVID和VID相关小知识

欢迎来到东用知识小课堂!1.PVID和VID的区别PVID和VID经常出现于二、三层交换机里,很多时候由于PVID和VID的设置不合理,造成VLAN划分变得混乱。一般你去超市买东西有个扫描设备扫描一下商品上的标签,然后价格就会出现。商品上的标签…

分布式锁与数据库悲观、乐观锁

分布式锁 什么是分布式锁 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 1.线程锁 主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为…

Redis主从复制与读写分离

1、为什么要主从复制、读写分离Redis在作为缓存的时候,随着项目访问量的增加,对Redis服务器的操作也越加频繁,虽然Redis读写速度都很快,但是一定程度上也会造成一定的延时,甚至出现宕机的可能性,这时候就出…

如何使用知行之桥搭建SFTPServer

知行之桥EDI系统同时支持SFTP Server和SFTP Client功能,既可以作为SFTP Server供多个Client连接,也可以作为Client连接多个Server。无论是作为SFTP Server还是SFTP Client,都只需要简单的配置即可实现。 SFTP Server的特性包括一下几点&…

【React全家桶】react路由

react路由5.1. 路由的简介5.2 路由的基本使用5.3 路由组件与一般组件5.4 NavLink及其封装5.5 Switch5.6 路由的模糊匹配与严格匹配5.7 Redirect重定向5.8 向路由组件传递参数5.9 编程式路由导航5.10withRouter的使用5.12 BrowserRouter与HashRouter的区别5.1. 路由的简介 单页W…

代码随想录--二叉树章节总结 Part III

代码随想录–二叉树章节总结Part III 1.Leetcode106 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 解题思路…

【Go基础】并发编程

文章目录1. 并发模型2. Goroutine的使用3. Channel的同步与异步4. 并发安全性5. 多路复用6. 协程泄漏7. 协程管理1. 并发模型 任何语言的并行,到操作系统层面,都是内核线程的并行。同一个进程内的多个线程共享系统资源,进程的创建、销毁、切…

【监控开发】jps命令怎么远程调用另一个IP的机器,jstatd服务支持

jsp命令远程调用咩有Linux服务器启动jstatd服务的时候Linux服务器如何启动jstatd服务1.查找jdk所在目录2.在jdk的bin目录下创建文件jstatd.all.policy3.给这个文件赋权4.这个文件写入安全配置,赋值粘贴即可5.启动jstatd服务6.查看是否启动成功再去另外一台服务器调用…

第一章:Go语言为并发而生

在早期 CPU 都是以单核的形式顺序执行机器指令。Go语言的祖先C语言正是这种顺序编程语言的代表。顺序编程语言中的顺序是指:所有的指令都是以串行的方式执行,在相同的时刻有且仅有一个 CPU 在顺序执行程序的指令。 随着处理器技术的发展,单核…

C语言深度解剖-关键字(4)

目录 signed、unsigned 关键字补充内容 关于大端和小端 大小端存储数据方式 判断大小端 深入理解数据存储 练习: 写在最后: signed、unsigned 关键字补充内容 关于大端和小端 我们通过在内存中存储一个值, 用于观察数据在内存中的存…

Python连接Liunx中mysql数据库-保姆级教程

首先确保你的liunx中已经安装好了mysql数据库如果没有安装mysql数据库看这篇文章Centos6从零开始安装mysql和tomcat后台环境,并成功部署Tomcat项目图文详细过程 python连接Liunx中mysql数据库进行增删改查liunx中相关环境改变Python中连接liunx中的mysql数据库在Nav…

上班第一件事:马上卸载这个恶心的软件!

一上班就被Notepad给恶心到了。“如果不同意政治观点,就在你的源码中添加随机字符。”这个Notepad作者侯今吾真是把自己当做大人物了啊?!率性而为,根本不再考虑用户的感受了。 这个Twitter帖子很快就被一片骂声淹没,这…