javascript期末作业【三维房屋设计】

1、引入three.js

  1. 官网下载three.js 库

  1. 放置目录并引用

引入js文件:

  • 设置场景(scene

(1)创建场景对象

 

(2)设置透明相机

1,透明相机的优点

透明相机机制更符合于人的视角,在场景预览和游戏场景多有使用,可以自行设置近裁边界,远裁边界.

 

 (3)设置光源

 (4)设置自动渲染器

(5)设置鼠标控制器控制场景旋转

  • 创建网格对象

(1) 基本原理

1.建立3D模型(以立方体为例)

2.设置材料

3.建立网格对象mesh,设置mesh位置 

4.将网格对象加入场景

5.添加辅助坐标系,方便操作

  (2)给前后左右墙编号易于以后操作

1.创建地板和前后左右墙:

2.创建各个房间的隔板墙

 

 3.代码:

  • ThreeBSP差集制造窟窿
  1. 基本原理

1. ThreeBSP库,可以将现有的模型组合出更多个性的模型来使用。我们可以使用ThreeBSP库里面的三个函数进行现有模型的组合,分别是:差集(相减)、并集(组合、相加)、交集(两几何体重合的部分)。这里主要用它的subtract差集函数制造窟窿.

2.主要代码

(2)引入库文件:

1.引入ThreeBSP.js库文件

 

以下是相关应用:

(3)在底座上制造楼梯空间

  1. 创建一个立方体

  1. 与底座做差集

 

3.结合结果新建mesh模型

 4.将模型加入场景中

5.代码:

(4)创造阳台

1.基本思路

用一个大立方体套小立方体 做差集

再将前墙与小立方体做差集 

2.代码:

  • 制造贴图美化室内:

(1)挂一幅画

1.在网上下载一张图片并修改名称放到根目录中

 

2.贴图到场景墙壁

  1. 代码:

  • 制造家具模型并放置

(1)创建一个桌子

1.建立立方体桌面再建立底台

2. 效果:

代码:

(2)创建一个马桶

1.思路:用一个大圆柱扣去小圆柱

2.具体实现

建立大圆柱:

建立小圆柱并与大圆柱做差集

最终效果:

代码:

 

(3)创建四个凳子

思路:和马桶的思路差不多再用另一个立方体与之做差集得到

再利用循环在桌子两侧分别建立两个

代码:

(4)创建一个沙发

1.和创建凳子的思路差不多

代码:

(5)建一个床和两个柜子

1.用简单扁平的立方体当作简易的床

再制作小柜子

  1. 也是用普通的小立方体当作柜子

代码:

(6)创建一个灶台

1.用两个黑色立方体当作大理石平台,用两个圆柱体当作锅

代码:

  • 完善细节

(1)插入四个立方体台阶

1.创建四个台阶,并放入楼梯空间

 

 代码:

后来发现 可以用循环解决多次创建台阶,效果与原来一样.

优化后代码如下:

  • 产品完成预览
  1. 经历初步学习,产品大概成型.

 

  • 底层源码的一些理解
  1. 图形的形成

一般图形和几何题都是由材料和形状两部分组成的

一个图形再复杂,也都是由顶点数据集构成的

每个顶点显示一种颜色,于是用类型数组就可以存储位置点集和颜色点集,将图形按rgb颜色排列的形式显示出来,当使用顶点属性点渲染时就不需要用color属性渲染颜色。Threejs通过算法进行差值计算将三个点的颜色进行插值渲染

  • 心得体会
  1. Three.js值得去学

其实Threejs学习起来并没有想象中的复杂,如果像学一门编程语言一样循序渐进的学它,就会收获很多知识.而且我对threejs这类建模类的东西很感兴趣。

  1.  思考地越慢,学js学地越快

这句话听上去有些违背常理,所以我会用一个故事来解释。我的一个朋友曾经对 JavaScript 的某些特性感到困惑。我让他和我一起过一遍他知道的内容然后解释一下哪一部分让人困惑。当他检查代码片段的时候,我注意到他有些急躁。“等等!”我说。“慢一点,跟我解释下这里的每一步。”我的朋友接着向我解释了这段代码的作用。我又一次打断他,“你还是太急了。再试一次,但是这一次,我需要你逐字逐句的跟我解释每行代码并且告诉我代码的作用。”这一次,我的朋友能够更好的解释代码中发生的事情。其中的关键是他有花时间去逐步检查每行代码而不是企图一下子理解全部。在这样的情况下,思考地越慢实际上能让你学地更快。

  • 参考文献
  1. Three.js (xuexihtml5.com)
  2. Three.js相机对象.lookAt()方法 (yanhuangxueyuan.com)
  3. Three.js相机位置属性.position (yanhuangxueyuan.com)
  4. Three.js相机位置属性.position (yanhuangxueyuan.com) Three.js相机控件OrbitControls (yanhuangxueyuan.com)
  5. (48条消息) 51 使用ThreeBSP库进行Three.js网格组合_现在学习也不晚-CSDN博客_threebsp
  6.  Web前端开发技术实验与实践 作者: 储久良, 编著 出版社: 清华大学出版社 出版日期: 2018-08-01
  7. Three.js开发指南:WebGL的JavaScript 3D库(原书第2版) 作者:[美]乔斯·德克森(Jos Dirksen) 著;杨芬 译 出版社:机械工业出版 出版日期:2017-06-00
  • 11/25做的一些改动
  1. 创建电视机 

1.一个立方体加一个圆锥,完成图

  1. 代码:

  1. 创建一些窗户

1.对墙体稍微修改,扣出几个窟窿;

2.代码:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BIO、NIO和AIO

一.引言 何为IO 涉及计算机核心(CPU和内存)与其他设备间数据迁移的过程,就是I/O。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。 I/O 描述了计算机系统…

基于YOLOv8模型的奶牛目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的奶牛目标检测系统可用于日常生活中检测与定位奶牛目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…

CentOS7源码安装MySQL详细教程

😊 作者: Eric 💖 主页: https://blog.csdn.net/weixin_47316183?typeblog 🎉 主题:CentOS7源码安装MySQL详细教程 ⏱️ 创作时间: 2023年08月014日 文章目录 1、安装的四种方式2、源码安装…

时序预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测

时序预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测 目录 时序预测 | MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SA-ELM模拟退火算法优化极限学习机时间序列预测 程序设计 完整…

Redis中的分布式锁及其延生的问题

前言 本文将着重介绍Redis中的分布式锁及其与出现的死锁和锁误删问题 什么是分布式锁 首先问题就是什么是分布式锁,分布式锁就是分布式系统中实现并发控制的一种锁机制,它可以保证多个节点在同一个时间只有有一个能成功竞争到系统资源(共享…

React源码解析18(5)------ 实现函数组件【修改beginWork和completeWork】

摘要 经过之前的几篇文章,我们实现了基本的jsx,在页面渲染的过程。但是如果是通过函数组件写出来的组件,还是不能渲染到页面上的。 所以这一篇,主要是对之前写得方法进行修改,从而能够显示函数组件,所以现…

如何获得Android 14复活节彩蛋

每个新的安卓版本都有隐藏复活节彩蛋的悠久传统,可以追溯到以前,每个版本都以某种甜食命名。安卓14也不例外,但这一次的主题都是围绕太空构建的——还有一个复活节彩蛋。 安卓14复活节彩蛋实际上是一款很酷的小迷你游戏,你可以乘…

Day14 01-Shell脚本编程详解

文章目录 第一章 Shell编程【重点】1.1. Shell的概念介绍1.1.1. 命令解释器4.1.1.2. Shell脚本 1.2. Shell编程规范1.2.1. 脚本文件的结构1.2.2. 脚本文件的执行 1.3. Shell的变量1.3.1. 变量的用法1.3.2. 变量的分类1.3.3. 局部变量1.3.4. 环境变量1.3.5. 位置参数变量1.3.6. …

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片

今日学习0.96寸单色OLED显示屏的自由取模显示: 宋体汉字比较复杂,常用字符可以直接复制存下来,毕竟只有那么几十个字母字符,但汉字实在太多了,基本不会全部放在单片机里存着,一般用到多少个字就取几个字的模&#xff…

详解strcmp函数

strcmp函数是用来比较两个字符串的,按理来说,比较结果只有两种:相同或不同。但是,事实上,strcmp函数在设计时会有三种情况,下面详细介绍: 这个函数的输入为两个字符串的首元素地址(即…

CG MAGIC分享为什么使用3d Max渲染,呈现白蒙蒙的?

使用3d Max渲染,有小伙伴反映,为什么渲染过程中,max渲染,总是出现白蒙蒙的的效果呢? 渲染出这白白一片是什么原因导致的呢? 想要解决的朋友,点进来,看看CG MAGIC小编整理的解决方法…

leetcode 279. 完全平方数

2023.8.18 与零钱兑换相似&#xff0c;本题属于完全背包问题&#xff1a;完全平方数为物品&#xff0c;整数n为背包。 直接上代码&#xff1a; class Solution { public:int numSquares(int n) {vector<int> dp(n1 , INT_MAX);dp[0] 0;for(int i1; i*i<n; i){for(in…