webJL

news2024/11/19 20:40:05

3D开发初体验,入门教程

效果图:

结合VUE的实现代码:

<template>
	<view class="">
		<view id="aaa" ref="webglContainer"></view>
	</view>
</template>

<script>
	import * as THREE from 'three';
	// 引入扩展库OrbitControls.js  相机控件对象,本质上是通过控件改变相机的位置
	import {
		OrbitControls
	} from 'three/examples/jsm/controls/OrbitControls.js';

	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		mounted() {
			window.THREE = THREE;
			// 创建场景
			const scene = new THREE.Scene();

			// 创建立方体
			const geometry = new THREE.BoxGeometry(100, 100, 100);
			// 材质  #aaaaff
			const material = new THREE.MeshLambertMaterial({
				color: 0xaaaaff,
				transparent: true,
				opacity: 0.9
			});

			//网格模型-表示物体(颜色,外观)
			const mesh = new THREE.Mesh(geometry, material);

			//设置网格模型的位置
			// mesh.position.set(10,10,0)

			//把网格模型添加到场景中
			scene.add(mesh);

			// 创建三维坐标轴
			const axesHelper = new THREE.AxesHelper(150)
			scene.add(axesHelper);

			// 创建点光源
			const pointLight = new THREE.PointLight(0xffffff, 1, 0, 0);
			//设置光的位置
			pointLight.position.set(180, 120, 100);
			// 不管是光还是物体都需要添加到场景里, 
			scene.add(pointLight);

			// 创建环境光
			const ambientLight = new THREE.AmbientLight(0xffffff, 0.4); // 柔和的白光
			scene.add(ambientLight);

			// 创建相机
			const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
			camera.position.set(200, 200, 200);
			// camera.lookAt(0,0,0)//坐标原点  X,y,Z
			camera.lookAt(mesh.position) //相机对准物体


			// 创建渲染器
			const renderer = new THREE.WebGLRenderer();
			renderer.setSize(window.innerWidth, window.innerHeight);
			
			document.getElementById('aaa').appendChild(renderer.domElement);
			
			// this.$nextTick(() => {
			//   const webglContainer = this.$refs.webglContainer;
			//   console.log('webglContainer', webglContainer);
			
			//   if (webglContainer instanceof HTMLElement) {
			//     webglContainer.appendChild(renderer.domElement);
			//   } else {
			//     console.error("webglContainer is not a valid DOM element2.");
			//   }
			// });
			
			//创建相机控件对象,本质上是通过控件改变相机的位置
			const controls = new OrbitControls(camera, renderer.domElement)
			controls.addEventListener("change", function() {
				renderer.render(scene, camera)
			})

			function animate() {
				requestAnimationFrame(animate);
				// mesh.rotation.x += 0.01;
				// mesh.rotation.y += 0.01;

				renderer.render(scene, camera);
			}

			animate();
		},
		methods: {

		}
	}
</script>

<style>
	.webgl {}
</style>

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

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

相关文章

谈思生物医疗直播 | 霍德生物研发中心负责人王安欣博士“iPSC衍生神经细胞产品全悬浮自动化工艺及特殊质控方法开发”

iPSC通过人体来源的终端体细胞重编程而来&#xff0c;其衍生细胞产品的生产与质控面临着诸多挑战&#xff0c;但也解决了许多自体细胞治疗的不稳定性和高成本等产业化难点。例如自体细胞不仅供体之间的差异对产品质量可能造成影响&#xff0c;即使同一个供体&#xff0c;体细胞…

纯css实现手机端loading

纯css实现手机端loading <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"wid…

3D网页游戏外包开发引擎

3D网页开发引擎是用于创建具有三维图形、虚拟现实和交互性的网页应用程序的工具。以下是一些常用的3D网页开发引擎以及它们的主要特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.Three.js&…

内置视图联动查看器,实现数据关联分析

前言 在数据驱动业务发展的今天&#xff0c;数据的关联分析变得越来越重要。作为一种强大的数据挖掘工具&#xff0c;它可以帮助企业发现数据之间的关联和模式&#xff0c;从而更好地理解市场和客户的行为。通过关联分析&#xff0c;企业可以发现看似无关的数据之间的联系&…

Android NDK开发详解之Application.mk探秘

Android NDK开发详解之Application.mk探秘 概览变量APP_ASFLAGSAPP_ASMFLAGSAPP_BUILD_SCRIPTAPP_CFLAGSAPP_CLANG_TIDYAPP_CLANG_TIDY_FLAGSAPP_CONLYFLAGSAPP_CPPFLAGSAPP_CXXFLAGSAPP_DEBUGAPP_LDFLAGSAPP_MANIFESTAPP_MODULESAPP_OPTIMAPP_PLATFORMAPP_PROJECT_PATHAPP_STL…

怎么实现在外远程访问连接家里内网的威联通NAS?

文章目录 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 前言 购入威联通NAS后&#xff0c;很多用户对于如何在外在公网环境下的远程访问威联通NAS…

1.5 安全机制

思维导图&#xff1a; 1.5 安全机制 X.800标准定义了一系列的安全机制&#xff0c;这些机制主要可分为两大类&#xff1a; 特定的安全机制&#xff1a;这些机制特定于某一协议层&#xff0c;例如TCP或应用层协议。普遍的安全机制&#xff1a;这些机制并不限制于任何特定的协议…

工行广州分行及Visa公司助力 华南理工大学启动科学健身“师生健康”嘉年华活动

千人同练瑜伽&#xff0c;伸展形体&#xff0c;拥抱美好自然&#xff1b; KPOP风格与华语流行音乐激情碰撞&#xff0c;人们在健身街舞课程中燃烧卡路里&#xff1b; 节拍强劲有力&#xff0c;人人跳起搏击操&#xff0c;尽情释放自我&#xff0c;争做夜空最闪耀的那颗星…… 1…

Spring 事务不生效的几种场景

Spring 事务不生效的几种场景 详细内容参考以下链接&#xff0c;这个链接是原文&#xff1a; spring 事务不生效的15中场景 非原创。 以下内容只是为了学习&#xff0c;加深印象&#xff0c;仅作为个人学习笔记&#xff0c; 请支持原创&#xff0c;内容请点击 spring 事务不生效…

手机桌面待办事项APP推荐,手机上可使用哪些待办事项APP

生活中&#xff0c;无论你是一名专业人士&#xff0c;学生&#xff0c;还是家庭主妇&#xff0c;总有各种各样的任务等待着你&#xff0c;有时候需要额外的工具来提醒和管理这些待办事项。手机上的待办事项APP软件成为了这个任务的好帮手&#xff0c;为我们提供了快速、方便的方…

STM32的bootloader程序(通过串口更新STM32应用程序)

1 什么是bootloader&#xff1f; Bootloader&#xff0c;也被称为引导加载程序&#xff0c;是操作系统启动过程中的一个重要组成部分。它是存储在非易失性存储器中的一段小程序&#xff0c;负责在操作系统内核运行之前加载并启动一些必要的系统组件。 当计算机开机后&#xff0…

C++设计模式_19_Memento 备忘录(理解,目前多使用序列化方案来实现)

Memento 备忘录模式也属于“状态变化”模式&#xff0c;它是一个小模式&#xff0c;在今天来看有些过时&#xff0c;当今已经很少使用当前模式实现需求&#xff0c;思想却不变&#xff08;信息隐藏&#xff09;&#xff0c;目前多使用序列化方案来实现。本系列所介绍的模式&…

资深8年测试总结,接口测试常用测试点汇总(精辟详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口测试是测试系…

【VPX630】青翼 基于KU115 FPGA+C6678 DSP的6U VPX通用超宽带实时信号处理平台

板卡概述 VPX630是一款基于6U VPX总线架构的高速信号处理平台&#xff0c;该平台采用一片Xilinx的Kintex UltraScale系列FPGA&#xff08;XCKU115&#xff09;作为主处理器&#xff0c;完成复杂的数据采集、回放以及实时信号处理算法。采用一片带有ARM内核的高性能嵌入式处理器…

当面试问你接口测试时,不要再说不会了

很多人会谈论接口测试。到底什么是接口测试&#xff1f;如何进行接口测试&#xff1f;这篇文章会帮到你。 前端和后端 在谈论接口测试之前&#xff0c;让我们先明确前端和后端这两个概念。 前端是我们在网页或移动应用程序中看到的页面&#xff0c;它由 HTML 和 CSS 编写而成…

Unity DOTS系列之Struct Change核心机制分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Struct Change机制&#xff0c;方便大家上手学习掌握Unity DOTS开发。 基于ArchType与Chunk的Entity管理机制 我们回顾以下ECS的内存管理核心机制,基于ArchTypeChunk的Entity管理模式。每个Entity不直接存放数据&#xff0c…

css矩形盒子实现虚线流动边框+css实现step连接箭头

由于项目里需要手写步骤条 且实现指定状态边框虚线流动效果&#xff0c;故使用css去绘制步骤条连接箭头和绘制边框流动效果 效果&#xff1a; 1.绘制步骤条连接箭头 <ul class"process-list"><div v-for"(process, index) in processes" :key&qu…

万圣节到了尽情狂欢吧Halloween is here Have a good time!

万圣节前夜是在10月31日庆祝的一个节日&#xff0c;根据传统&#xff0c;万圣节前夜的庆祝活动从太阳落山开始。Halloween is a holiday celebrated on October 31. By tradition, Halloween begins after sunset. 为了庆祝万圣节&#xff0c;孩子们化装成女巫、鬼和恶魔。To c…

『第十四章』雨燕的自我修养:Swift 调试技巧(下)

在本篇博文中,您将学到如下内容: 6. Xcode 界面调试6.1 Xcode 预览(Preview)7. 分析编译阶段8. 强大的 Instruments 工具9. Xcode 15 新结构化日志调试10. 一些调试小技巧总结离离原上草,一岁一枯荣. 野火烧不尽,春风吹又生 6. Xcode 界面调试 我们知道 App 在 Xcode 中运行…

kafka为什么如此之快?

天下武功&#xff0c;唯快不破。同样的&#xff0c;kafka在消息队列领域&#xff0c;也是非常快的&#xff0c;这里的块指的是kafka在单位时间搬运的数据量大小&#xff0c;也就是吞吐量&#xff0c;下图是搬运网上的一个性能测试结果&#xff0c;在同步发送场景下&#xff0c;…