当前位置: 首页 > news >正文

learn threejs (最小化例子)

参考来源
https://www.youtube.com/watch?v=gbTnojWE78k&t=803s

https://github.com/00-joe-js/playground-of-huge-potential

最小化场景例子

https://github.com/chunleili/threejsMinimal

运行方法:
git clone之后
VS code 打开文件夹

安装

npm install

运行

npm run dev

打开浏览器:
http://localhost:3000/

在这里插入图片描述
控制:鼠标右键平移,鼠标左键旋转

提示:可以用win+上下左右来分屏显示代码和浏览器,方便调试
提示:可以使用VS Code插件 colonize来自动为js添加分号(快捷键alt+enter)

为场景添加物体

打开代码src/index.ts
在这里插入图片描述

添加一个box(屏幕中间青色的那个板子)

        //add box
        const boxGeo = new BoxGeometry(150,15,150);
        const boxMat = new MeshBasicMaterial({color:0x00ffff});
        const box = new Mesh(boxGeo, boxMat);
        scene.add(box);
        box.position.y += 100;

解释:首先添加BoxGeometry,其次添加MeshBasicMaterial,最后把它们绑定一起,添加Mesh。然后在scene中添加这个box。最后调整box的高度。

所有threejs场景中的物体均是Geometry+Material 的组合,或者称之为Mesh。以后就用Mesh来指代threejs中的一个物体。

照猫画虎,再添加一个ball2

        //add ball2
        const ball2Geo = new SphereGeometry(100);
        const ball2Mat = new MeshBasicMaterial({color:0xff0000, wireframe:true});
        const ball2 = new Mesh(ball2Geo, ball2Mat);
        scene.add(ball2);
        ball2.position.y += 200;
        ball2.position.x += 10;

这次唯一不同在于增加了wireframe:true选项。Material就相当于一个蒙皮(skin),wireframe就是暴露出骨架。

相关文章:

  • Flask学习(四)-------蓝图
  • 牛客多校2 - Ancestor(LCA,前后缀)
  • 【毕业设计】深度学习垃圾分类系统 - 机器视觉
  • Linux 编写shell脚本记录操作用户日志信息
  • 从零开始配置vim(19)——终端配置
  • 岑溪洁净实验室设计布局规划总结
  • 要不要做全链路压测
  • node.js云学堂微信小程序学习系统的设计与实现毕业设计源码011735
  • 前端知识3-JavaScript
  • 函数和二维数组
  • 马士兵老师JVM调优(修订版)
  • OpenCV使用教程-读取图像imread使用说明
  • 项目应用RabbitMQ简单配置
  • k8s Seata1.5.1
  • Linux 搭建nginx redis mysql rabbitmq以及配置SSL
  • __proto__ 和 prototype的关系
  • 【Leetcode】104. 二叉树的最大深度
  • 【个人向】《HTTP图解》阅后小结
  • 230. Kth Smallest Element in a BST
  • centos安装java运行环境jdk+tomcat
  • C语言笔记(第一章:C语言编程)
  • Flannel解读
  • flutter的key在widget list的作用以及必要性
  • happypack两次报错的问题
  • HTTP中GET与POST的区别 99%的错误认识
  • IDEA常用插件整理
  • Objective-C 中关联引用的概念
  • overflow: hidden IE7无效
  • React Transition Group -- Transition 组件
  • vue.js框架原理浅析
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Zepto.js源码学习之二
  • 飞驰在Mesos的涡轮引擎上
  • 回流、重绘及其优化
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 力扣(LeetCode)21
  • 强力优化Rancher k8s中国区的使用体验
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 通信类
  • 一天一个设计模式之JS实现——适配器模式
  • 2017年360最后一道编程题
  • ​Python 3 新特性:类型注解
  • ​渐进式Web应用PWA的未来
  • ​马来语翻译中文去哪比较好?
  • #单片机(TB6600驱动42步进电机)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (13):Silverlight 2 数据与通信之WebRequest
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)LINQ之路
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版