three.js使用精灵模型Sprite渲染森林

效果: 

源码:

<template><div><el-container><el-main><div class="box-card-left"><div id="threejs" style="border: 1px solid red"></div><div class="box-right"></div></div></el-main></el-container></div>
</template>
<script>
// 引入轨道控制器扩展库OrbitControls.js
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
export default {data() {return {name: "",scene: null,camera: null,renderer: null,mesh: null,geometry: null,group: null,material: null,texture: null,};},created() {},mounted() {this.name = this.$route.query.name;this.init();},methods: {goBack() {this.$router.go(-1);},init() {// 1,创建场景对象this.scene = new this.$three.Scene();this.createGeometry();// 2,创建纹理加载器加载图片  (加载图片时用require)const textLoader = new this.$three.TextureLoader().load(require("../../assets/twelve/tree.png"));const textLoader5 = new this.$three.TextureLoader().load(require("../../assets/twelve/tree5.png"));// 创建组对象const group = new this.$three.Group()for (let index = 0; index < 50; index++) {let flag_1 = Math.trunc((Math.random() * 70)) % 2 == 0 ? -1 : 1;// 创建精灵材质对象const spriteMaterial = new this.$three.SpriteMaterial({transparent: true,// color:0x00ffff,//设置颜色map: flag_1 > 0 ? textLoader : textLoader5,});// Math.trunc 取整;Math.random() 获得0-1的随机数let flag = Math.trunc((Math.random() * 137)) % 2 == 0 ? -1 : 1;let flag2 = Math.trunc((Math.random() * 203)) % 2 == 0 ? -1 : 1;// 创建精灵对象const sprite = new this.$three.Sprite(spriteMaterial);sprite.position.set(Math.random() * 200 * flag, 40, Math.random() * 200 * flag2);sprite.scale.set(80, 80, 1);sprite.name = "我是大树" + index;group.add(sprite);}this.scene.add(group);// 添加辅助坐标轴const axesHelper = new this.$three.AxesHelper(300);// this.scene.add(axesHelper);// 创建环境光对象const light = new this.$three.AmbientLight(0xffffff, 100);this.scene.add(light);// 创建正交投影相机对象// this.camera = new this.$three.OrthographicCamera(-200,200,200,-200,1,1000);this.camera = new this.$three.PerspectiveCamera(60,1,0.01,1000);// 设置相机位置this.camera.position.set(300,300,300);// 设置相机指向this.camera.lookAt(0,0,0);this.renderer = new this.$three.WebGLRenderer();this.renderer.setSize(2200,1400);setTimeout(() => {this.renderer.render(this.scene, this.camera);},500)window.document.getElementById("threejs").appendChild(this.renderer.domElement);// 创建相机空间轨道控制器const controls = new OrbitControls(this.camera, this.renderer.domElement);controls.addEventListener("change", () => {this.renderer.render(this.scene, this.camera);})console.log('this.scene', this.scene);},// 创建平面缓冲几何体createGeometry() {const planeGeometry = new this.$three.PlaneGeometry(500,500);const material = new this.$three.MeshBasicMaterial({color: 0x14A88A,side: this.$three.DoubleSide});const plane = new this.$three.Mesh(planeGeometry, material);plane.rotateX(Math.PI/2);this.scene.add(plane);},},
};
</script>
//
<style lang="less" scoped>
.msg {padding: 20px;text-align: left;display: flex;justify-content: flex-start;flex-wrap: wrap;.span {margin: 0 30px 30px 0;// white-space: nowrap;}.p {text-align: left;}
}
.box-card-left {display: flex;align-items: flex-start;flex-direction: row;width: 100%;.box-right {text-align: left;padding: 10px;.xyz {width: 100px;margin-left: 20px;}.box-btn {margin-left: 20px;}}
}
</style>

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

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

相关文章

鸿蒙系统操作界面布局,华为鸿蒙操作系统大曝光

描述华为鸿蒙操作系统大曝光5月21日&#xff0c;华为消费者业务CEO余承东透露&#xff0c;面向下一代技术而设计的华为操作系统“鸿蒙”&#xff0c;最早将于今秋面市。而就在前天&#xff0c;环球时报(Global Times)发出推文表示&#xff1a;有消息人士称&#xff0c;华为正在…

android 高德获取省市,高德地图定位获取当前地址城市街道等详细信息(全部代码)...

自动定位后弹窗信息&#xff0c;包含省市县镇区路门牌号(效果图如下)代码↓↓↓获取地理位置var mapObj new AMap.Map(iCenter);mapObj.plugin(AMap.Geolocation, function () {geolocation new AMap.Geolocation({enableHighAccuracy: true, // 是否使用高精度定位&#xff…

鸿蒙系统新手教程,鸿蒙灭神决新手入门全流程图文攻略

鸿蒙灭神决新手入门全流程图文攻略2019-03-21 15:04:13来源&#xff1a;天天RPG编辑&#xff1a;野狐禅评论(0)中后期回归主题&#xff0c;如果还是打不过神器2&#xff0c;可以先到“中级挑战”这里完成第一排的四项挑战&#xff0c;可以获得四件道具。从这里开始由于我们刷木…

html添加工具栏,添加带有命令的工具栏 (HTML)

添加带有命令的工具栏 (HTML)03/04/2016本文内容[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发&#xff0c;请参阅 最新文档 ]ToolBar 是一个简单的控件&#xff0c;用于解决命令扩展问题。它具有一个 …

用计算机解决问题 评课稿,总结反思:二年级数学lbrack;解决问题rsqb;评课稿

二年级数学《解决问题》评课稿二年级数学《解决问题》评课稿今天上午听了一节二年级数学上册用加减混合的常识《解决问题》的课&#xff0c;受益匪浅。我觉得这节课是顺利的&#xff0c;有待我们学习跟借鉴。雷老师虽未年过五旬&#xff0c;但他不服老的敬业精神&#xff0c;以…

计算机信息科学蔺泽浩,上海交通大学计算机科学与工程系(CSE)

脑机交互的多模态疲劳驾驶检测系统本系统通过获取驾驶员的脑电信号(EEG)、眼电信号(EOG)、握力信号和Kinect图像&#xff0c;从生理信号和行为特征中提取与疲劳相关的特征&#xff0c;利用机器学习方法建立疲劳检测模型&#xff0c;实现驾驶员疲劳状态的度量与预测。与传统的基…

分布式认知在计算机应用系统,人机交互作业

1. 人机交互过程中人们经常利用的感知有哪几种&#xff1f;每种感知有什么特点&#xff1f;视觉感知、听觉感知、触觉感知三种。1)视觉感知特点&#xff1a;一方面&#xff0c;眼睛和视觉系统的物理特性决定了人类无法看到某些事物&#xff1b;另一方面&#xff0c;视觉系统进行…

word计算机桌面加密,如何给电脑的Word文件加密

如何给电脑的Word文件加密Word文件是我们在工作和生活中会频繁使用到的&#xff0c;采用适当的方法给需要保护的Word文件加密&#xff0c;可以确保信息安全。这里所讲的加密&#xff0c;是指以某种特殊的方法改变原有的信息数据&#xff0c;使得未经授权的用户即使获得了已加密…

梦龙即时通讯软件测试初学者,梦龙即时通讯软件

现在办公都使用社交软件来进行沟通交流&#xff0c;省时省力。梦龙即时通讯软件集企业邮箱管理、日程管理、企业通讯录以及员工互动等功能于一体。能够帮助用户在日常使用中&#xff0c;得到一个高效的体验&#xff0c;有着丰富的办公功能&#xff0c;包括文件的传送&#xff0…

计算机一级添加通讯录好友,电脑企业微信从微信好友中添加成员功能如何使用...

电脑企业微信"从微信好友中添加成员"功能如何使用腾讯视频/爱奇艺/优酷/外卖 充值4折起现在微信推出了企业微信软件&#xff0c;那么今天小编跟大家分享的是电脑企业微信"从微信好友中添加成员"功能如何使用。具体如下&#xff1a;1. 首先我们在电脑中打开…

计算机开机没有找到引导设备,电脑开机显示没有可以引导的设备

电脑是由硬件部分和软件部分构成的&#xff0c;硬件部分一般出现故障的机率不是很高&#xff0c;但是软件故障出现的机率就是非常非常的高了&#xff0c;一些能进系统的软件故障我们一般都是可以自行查资料解决&#xff0c;那么&#xff0c;开机黑屏且显示Reboot and Select Pr…

我的世界怎么修改服务器文本,《我的世界手机版》如何修改界面文本 自定义语言教程...

原标题&#xff1a;《我的世界手机版》如何修改界面文本 自定义语言教程我的世界手机版中&#xff0c;大家是否厌倦了游戏中枯燥死板的说明以及文字介绍呢&#xff1f;想不想在我的世界手机版中添加一点萌萌哒的元素呢&#xff1f;今天当乐网小编给大家带来的是我的世界手机版的…

win7系统服务器环境配置,win7系统服务器环境配置

win7系统服务器环境配置 内容精选换一换镜像是云耀云服务器运行环境的模板&#xff0c;模板中包含了特定的操作系统和运行环境&#xff0c;有时也额外包括了一些预装的应用软件。通过镜像可以部署特定的软件环境&#xff0c;也可以将云服务器制作镜像以备份环境。镜像分为公共镜…

电脑面上,在电脑桌面上添加文字_在电脑桌面上添加图片

2016-12-27 10:53:551.首先单击鼠标右键&#xff0c;在出现的选项中选择“小工具”2.在小工具里面我们会看到一个”时钟图标“。3.双击此图标或者鼠标放到图标上&#xff0c;按住拖动&#xff0c;即可将时钟移动到桌面上&#xff0c;按住时钟图标&#xff0c;即可...2016-12-15…

以太坊代币事件监控_以太坊:什么是ERC20标准?

不以规矩&#xff0c;不能成方圆许多人应该都听过 代码即法律(Code Is Law)&#xff0c;因为程序写完了&#xff0c;无论执行多少次都会得到同样的结果&#xff0c;除非有外界因素的干扰。在多人协作的过程中一定是要按照一个标准来进行分工&#xff0c;这样才能最快的完成整体…

android tv 蓝牙服务_打电话、看电话,听清大千世界,不单只有助听器,力斯顿的尖端配件“无线通”“TV伴侣”了解一下。...

打电话、看电话&#xff0c;听清大千世界&#xff0c;不单只有助听器&#xff0c;让我们来了解一下力斯顿8C平台助听器可应用的一些尖端配件是如何帮助那些对丰富生活有着高标准要求的人们。一&#xff0c;连接手机&#xff0c;连接世界 &#xff1a;力斯顿助听器 手机 力斯顿…

自动填充html_第 11 篇:自动生成文章摘要

作者&#xff1a;HelloGitHub-追梦人物文中涉及的示例代码&#xff0c;已同步更新到 [HelloGitHub-Team 仓库](https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial) 博客文章的模型有一个 excerpt 字段&#xff0c;这个字段用于存储文章的摘要。目前为止&#xff…

icd植入是大手术吗_骨折手术植入了钢板,骨折痊愈后,需要取出钢板吗?

六十多岁的王大爷不小心摔骨折了&#xff0c;经过手术以及大半年的调养治疗&#xff0c;王大爷终于康复出院了&#xff0c;可就在前几天王大爷又来找我复诊&#xff0c;跟我说:姚大夫&#xff0c;我这骨折的位置总是有点酸麻的感觉&#xff0c;你说是不是当时植入的钢板引起的呀…

安徽关节式焊接机器人_机器人自动焊接技术的优势及应用介绍

焊接生产线机械自动化技术的应用经历了仿制、自行研制、稳步发展三个阶段。焊接制造行业的焊接专机将得到普遍应用&#xff0c;焊接生产过程中&#xff0c;机械化与自动化程度将提高15%左右&#xff0c;焊接自动化程度将达到40&#xff5e;50%&#xff0c;为了发展焊接自动化技…

提高抗打击能力_孩子抗挫能力差,巧用4个小窍门,引导孩子将“危”化为“机”...

孩子在成长的过程中失败与挫折是必不可缺少的&#xff0c;家长要明白&#xff0c;孩子就是在挫折与失败中&#xff0c;跌跌撞撞成长的。博为曾说过&#xff1a;一次的失败&#xff0c;一次跌倒&#xff0c;只能证明我们成功的决心还不够坚定。所以当孩子不够具有成熟的抗打击能…