位置: 编程技术 - 正文

利用three.js画一个3D立体的正方体示例代码(three.js gui)

编辑:rootadmin

推荐整理分享利用three.js画一个3D立体的正方体示例代码(three.js gui),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:three.js 2d绘图,three.js制作,three.js bim,three.js 2d绘图,threejs画线,three.js 2d绘图,threejs画线,threejs画线,内容如对您有帮助,希望把文章链接给更多的朋友!

简介

three.js 是一款WebGL框架,WebGL可以让我们在canvas上实现3D效果。实现3D效果在国内来说还算是比较新的东西,可供查阅的资料也不多。这篇文章仅是一个入门篇,介绍如何绘制一个3D正方体。

Three.js中的基本概念

Three.js包含3个基本概念:场景(Scene)、相机(Camera)和渲染器(Renderer)。

场景就是需要绘制的对象,相机代表取景的视角,渲染器是绘制的载体(可以挂靠到浏览器的DOM元素中),

也就是我们通过相机拍摄场景然后绘制到目标介质中去。

创建场景、相机和渲染器

上述代码首先创建一个场景,然后创建一个PerspectiveCamera(立体感的相机),接着创建了一个WebGL的渲染器(注意Three.js也支持非3D的Canvas 2D的渲染器),然后挂靠为HTML文档body的DOM子元素。

介绍完毕,首先奉上实现的效果图:

这就是实现的效果图,还是挺有立体感的吧?

绘制前的准备

写代码前,要先下载最新的three.js框架包,引入自己的页面。

具体实现过程

准备一个canvas画布

这个画布是我们展现整个3D正方形的画布,也就是上图那个黑色的方框。

明确绘制思路

接下来的绘制过程会涉及到多个概念:canvas、scene、camera、renderer。

为了能更好理解绘制过程的代码和有助于记忆,我们先来理解这几个概念:

假设我们现在正在旅游的途中,看到了一个很唯美的画面,想把这个3D世界记录下来

这个唯美的场景就是scene,我们用相机camera拍摄下来形成照片 为了能看清楚这个照片,我们把这个照片放置在一个画布canvas上 最后,我们再用renderer修饰渲染一下

这样,我们就能成功展现这个3D世界了。

【程序还是很贴近生活哒&#;】

利用three.js画一个3D立体的正方体示例代码(three.js gui)

通过现实世界的理解,我们接下来开始代码啦o( ̄? ̄)ブ

准备好canvas、scene、camera、renderer,给一个初始化的方法

接下来我们要做的就是完善这个init()方法啦。

创建一个3D场景scene

场景最简单了,只需要用Scene声明一个scene对象。

准备好camera

我们这里设置的相机是一个透视的相机PerspectiveCamera

camera有四个参数

第一个参数是视线辐射的角度,这个参数越大,我们能看到的视觉越广,这个物体看上去会更小。 第二个参数是图像内容展示的比例:width/height。我们一般把这个比例设置为和画布的比例一样,这样看到的图片才不会变形。 第三四个参数分别是相机离展示内容(正方体)最近的距离和最远的距离。

接下来给camera设置摆放的位置,并把camera放到场景scene中

由于我们的世界是3D的,camera的摆放位置也是三维的,涉及三个参数:X轴、Y轴、Z轴。(0, 0, 0)是相机的原点,(1, 1, 5)就是把我们的相机往右和往上移动了1个单位,往后移动了5个单位。

ps: 这个时候画布canvas的大小正好是正方体的5倍。

在场景中添加一个立方体

每个形状都是一个mesh,geometry可以理解为物体的骨骼, material可以理解为物体的皮囊

再创建一个可填充的形状cube

这样就构成了完整的实物

我们再将这个形状放入场景scene中

CubeGeometry参数设置为1:1:1表示这是一个正方体,当然可以自行修改比例,变成不一样的立方体

最后,创建renderer对图像进行渲染

将canvas交给renderer,也就是一个渲染的容器

antialias: true 平滑,抗锯齿,输出的画面会进行优化,不会带毛边

经过以上步骤,我们的的正方体就成功创建好了。

以下是本例完整代码:

总结

标签: three.js gui

本文链接地址:https://www.jiuchutong.com/biancheng/369831.html 转载请保留说明!

上一篇:IE11下使用canvas.toDataURL报SecurityError错误的解决方法(日亚海淘官网)

下一篇:利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解(canvas的使用步骤)

  • 支付给员工的工资属于什么科目
  • 税务是怎么回事
  • 如何查看发票是否被抵扣
  • 简易计征怎么开票
  • 招标代理服务费由谁支付
  • 租房专项扣除有上限吗
  • 2019一般纳税人新政策
  • 自行研发的无形资产会计处理
  • 出口退税新旧申报
  • 记账凭证是不是会计凭证
  • 小规模纳税人开具增值税专用发票
  • 会计档案交接怎么填写
  • 分配辅助生产车间成本记账凭证
  • 个人挂靠公司承接工程如何做会计处理?
  • 服装厂委托物资零散加工成品如何做账呢?
  • 企业支付的工伤赔偿需要什么材料
  • 预付材料款会计分录
  • 税控技术服务费怎么做账
  • 境外代扣代缴的税最后归谁所有
  • 关于增值税专用发票
  • 企业销售货物因违规处罚
  • 汇算清缴涉及到哪些科目的调整
  • 个人转让无形资产增值税税率
  • 增值税专用发票可以开电子发票吗
  • 如何修改鼠标指示灯颜色
  • 笔记本电脑如何恢复出厂系统
  • win11 zen2
  • 华为分享平时可不可以打开
  • 出差环境补贴怎么算
  • 中投公司投资的股票
  • qqlogin.exe是什么进程 qqlogin.exe应用程序错误解决办法
  • php 设计模式 鸟哥
  • 税收协定与国内税法发生冲突
  • 支付属于借方吗?
  • 基于Selenium的自动化测试平台设计与实现
  • 计提的福利费怎么处理
  • vue路由实例
  • 编译原理第三版
  • 人工智能导论论文2000字
  • 面试宝典下载
  • 10年未被强制修复!黑客利用Windows旧漏洞攻击通信公司并分发恶意文件
  • unlinkhist.dat怎么删除
  • python的图
  • 开票软件的证书口令是多少
  • 保函被索赔支付什么意思
  • sql server数字类型
  • 业务招待费的会计处理方法
  • 综合所得申报是个人所得税申报吗
  • 五种差异化收费方式
  • 无票收入不走对公账户
  • 等线支付给劳务派遣单位的工资怎么做账?
  • 代扣代缴境外增值税怎么申报
  • 已认证发票是否已抵扣
  • 个人所得税征税对象是什么
  • 劳务派遣和劳务承揽的区别
  • 承兑汇票到期取现手续费
  • 企业购买二手车计提折旧年限
  • 农业合作社账务都有什么科目
  • 存根联明细怎么申报
  • 考核奖金属于工资吗
  • 销售一批产品给丙公司,该批产品标价200万yuan
  • 冲暂估成本能冲部分暂估吗
  • 会计账簿的作用之一是编报和输出会计信息
  • 账本页面设置
  • mysql改表名语句
  • 正常关机开机后爱奇艺自动卸载
  • winxp开机画面自动重启
  • ubuntu20怎么连接蓝牙鼠标
  • win8笔记本无法更新正在撤销更改
  • win10 ug
  • perl 特殊字符转义
  • node.js cookie-parser之parser.js
  • 通过intent可以启动哪些组件
  • 建立批处理命令
  • apktool修改包名
  • python的设置
  • 江苏电子税务局网站官网
  • 购置税完税证明电子版怎么查看
  • 绵阳市十大纳税企业排名
  • 申报农业项目的程序是什么?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设