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.代码:

 源码下载:javascript课程大作业.zip源码-Javascript文档类资源-CSDN文库

设计文档下载:三维房屋产品设计书.docx文档资源-CSDN文库

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

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

相关文章

VALN-hybrid模式

实验拓扑及要求 一、实验思路 1.R1-R3按要求配置,R2不划分vlan使其全部都可以访问 2.交换机和路由器的交换机直连接口设为hybrid模式且R4-R6不带vlan标签访问路由器 3.交换机和交换机的两个直连接口设为hybrid模式且只允许R4-R6所在vlan标签通过 4.R4-R6只允许其…

怎么对视频进行压缩?

怎么对视频进行压缩?视频压缩,我们都知道是将视频文件进行压缩变小的过程,是我们日常办公中较为常用的手段。现如今,在视频技术不断发展与创新的基础上,视频分辨率也在不断提高,进而导致文件占有量也非常大…

2023河南萌新联赛第(五)场:郑州轻工业大学

A.买爱心气球 原题链接 : 登录—专业IT笔试面试备考平台_牛客网 博弈论 : #include <iostream> using namespace std; int t,n,m; string s1 "Alice",s2 "Bob"; int main() {cin>>t;while(t--){cin>>n>>m;if (n % 3 0) {cou…

【HarmonyOS】codelab在hvigor版本2.4.2上无法运行问题

【关键字】 HarmonyOS、codelab、hvigor 【问题描述】 有cp反馈集成鸿蒙codelab报错。 下载音乐专辑示例文件&#xff08;一次开发&#xff0c;多端部署-音乐专辑&#xff08;ArkTS&#xff09; (huawei.com)&#xff09;后构建项目&#xff0c;显示找不到2.5.0的hvigor。 …

数学建模之“层次分析法”原理和代码详解

一、层次分析法简介 层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;AHP&#xff09;是一种用于多准则决策分析和评估问题的定量方法&#xff0c;常用于数学建模中。它是由数学家托马斯赛蒂&#xff08;Thomas Saaty&#xff09;开发的。 层次分析法将复杂的决…

读发布!设计与部署稳定的分布式系统(第2版)笔记33_混沌工程

1. 康威定律 1.1. 梅尔文康威 1.1.1. Melvin Conway 1.1.2. 1968年 1.1.3. 在设计系统时&#xff0c;组织受制于其自身的沟通结构&#xff0c;这使得它设计的系统结构与沟通结构相一致。 1.1.3.1. 社会学现象 1.2. 要在系统内部或系统之间构建接口&#xff0c;两个人必须…

Spring事件监听源码解析

spring事件监听机制离不开容器IOC特性提供的支持&#xff0c;比如容器会自动创建事件发布器&#xff0c;自动识别用户注册的监听器并进行管理&#xff0c;在特定的事件发布后会找到对应的事件监听器并对其监听方法进行回调。Spring帮助用户屏蔽了关于事件监听机制背后的很多细节…

php_mb_strlen指定扩展

1 中文在utf-字符集下占3个字节,所以计算出来长度为9。 2 可以引入php多字节字符的扩展&#xff0c;默认是没有的&#xff0c;需要自己配置这个函数 3 找到php.ini文件&#xff0c;去掉;extension mbstring的注释&#xff0c;接着重启apache服务 可以看到准确输出的中文的长度…

Vue elementui 实现表格selection的默认勾选,翻页记录勾选状态

需求&#xff1a;当弹出一个列表页数据&#xff0c;对其进行筛选选择。 列表更新&#xff0c;填充已选数据 主要使用toggleRowSelection 代码如下&#xff1a; <el-table v-loading"loading" :data"drugList" selection-change"handleSelection…

Python 的下一代 HTTP 客户端

迷途小书童 读完需要 9分钟 速读仅需 3 分钟 1 环境 windows 10 64bitpython 3.8httpx 0.23.0 2 简介 之前我们介绍过使用 requests ( https://xugaoxiang.com/2020/11/28/python-module-requests/ ) 来进行 http 操作&#xff0c;本篇介绍另一个功能非常类似的第三方库 httpx&…

7-2 求矩阵各行元素之和

分数 15 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 本题要求编写程序&#xff0c;求一个给定的mn矩阵各行元素之和。 输入格式&#xff1a; 输入第一行给出两个正整数m和n&#xff08;1≤m,n≤6&#xff09;。随后m行&#xff0c;每行给出n个整数&#xff0c;其间…

【uniapp】中 微信小程序实现echarts图表组件的封装

插件地址&#xff1a;echarts-for-uniapp - DCloud 插件市场 图例&#xff1a; 一、uniapp 安装 npm i uniapp-echarts --save 二、文件夹操作 将 node_modules 下的 uniapp-echarts 文件夹复制到 components 文件夹下 当前不操作此步骤的话&#xff0c;运行 -> 运行到小…

JavaScript函数式编程【进阶】

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…

prompt-engineering-note(面向开发者的ChatGPT提问工程学习笔记)

介绍&#xff1a; ChatGPT Prompt Engineering Learning Notesfor Developers (面向开发者的ChatGPT提问工程学习笔记) 课程简单介绍了语言模型的工作原理&#xff0c;提供了最佳的提示工程实践&#xff0c;并展示了如何将语言模型 API 应用于各种任务的应用程序中。 此外&am…

如何解决使用npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误

遇到问题&#xff1a;用npm下载组件时出现Cannot find module ‘D&#xff1a;software\node_modules\npm\bin\npm-cli.js’ 问题&#xff0c;导致下载组件不能完成。 解决方法&#xff1a;下载缺少的npm文件即可解决放到指定node_modules目录下即可解决。 分析问题&#xff1…

关于docker-compose up -d在文件下无法运行的原因以及解决方法

一、确认文件下有docker-compose.yml文件 二、解决方法 检查 Docker 服务是否运行&#xff1a; 使用以下命令检查 Docker 服务是否正在运行&#xff1a; systemctl status docker 如果 Docker 未运行&#xff0c;可以使用以下命令启动它&#xff1a; systemctl start docker …

基于51单片机直流电机PWM调速液晶1602显示设计

一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统&#xff0c;并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节&#xff0c;从而控制其输入信号波形等…

React快速入门

最近需要学到react&#xff0c;这里进行一个快速的入门&#xff0c;参考react官网 1.创建和嵌套组件 react的组件封装是个思想&#xff0c;我这里快速演示代码&#xff0c;自己本身也不太熟悉。 代码的路径是src底下的App.js function MyButton() {return (<button>I…

poste邮件服务器搭建

关于poste poste是一款开源邮件服务软件&#xff0c;可以很方便的搭建&#xff1a;SMTP IMAP POP3 反垃圾邮件 防病毒 Web 管理 Web 电子邮件&#xff0c;支持以下特性。 SPF、DKIM、DMARC、SRS 的原生实现&#xff0c;带有简单的向导用于检测木马、病毒、恶意软件的防…

密码学学习笔记(二十):DSA签名与X.509证书

数字签名 下图是一个制作以及使用数字签名过程的通用模型。 假设Bob发送一条消息给Alice&#xff0c;尽管消息并不重要&#xff0c;也不需要保密&#xff0c;但他想让Alice知道消息确实是他本人发的。出于这个目的&#xff0c;Bob利用一个安全的散列函数&#xff0c;比如SHA-…