微信小程序版threejs的使用

微信小程序中使用threejs-miniprogram - 【安装】 微信小程序使用threejs 阅读详情
AI摘要

本文详细介绍如何在微信小程序中使用Three.js加载3D模型,包括gltf和obj格式,涉及模型加载器、渲染器配置及触控事件处理。

        首先是使用环境:我是使用的uniapp制作的微信小程序,当然原生的也是可以的,但是测试过很多,发现微信官方的threejs移植版本只能够导入gltf格式的模型,无法导入obj,这就有些尴尬了,为此我找了很多版本的threejs,首先是threejs-miniprogram,也就是官方的,可以直接在uniapp中使用,其实也就是three-platformize的套壳,没有obj的加载器,而且不知道什么原因,我设置gltf模型的材质时总是没有任何效果,所以最后还是选择了three-platformize版本的。

        那么直接上操作吧~

        注意:我的操作均是使用uniapp的方式使用的,直接在微信开发者工具中也是可以使用的,只是导入依赖的方式可能不太一样,我没试过~

        首先是github上的源码位置:

        https://github.com/deepkolos/three-platformize

npm install three-platformize

目录中应该是这样的,package.json中应该是有这个依赖的

然后就是源码了

<template>
	<canvas class="webgl" type="webgl" id="gl" @touchstart="onTX" @touchmove="onTX" @touchend="onTX" style="width: 100vw; height: 100vw;"></canvas>
</template>

<script >
import { $cancelAnimationFrame, $requestAnimationFrame, $window, AmbientLight, DirectionalLight, PerspectiveCamera, PLATFORM, Scene, sRGBEncoding, WebGL1Renderer } from 'three-platformize'
import * as THREE from 'three-platformize'
import { WechatPlatform } from 'three-platformize/src/WechatPlatform'
import {GLTFLoader,GLTF } from 'three-platformize/examples/jsm/loaders/GLTFLoader'
import { OrbitControls } from 'three-platformize/examples/jsm/controls/OrbitControls'
import {OBJLoader } from 'three-platformize/examples/jsm/loaders/OBJLoader'

export default {
	data(){
		return {
			canvas:null
		}
	},
	onReady() {
		uni.createSelectorQuery().select('#gl').node().exec((res) => {
			const canvas = this.canvas = res[0].node
			this.platform = new WechatPlatform(canvas)
			PLATFORM.set(this.platform);
			// 场景
			const scene = new THREE.Scene()
			scene.background = new THREE.Color(0xfffff0);
			scene.add(new AmbientLight(0xffffff, 1.0))
			scene.add(new DirectionalLight(0xffffff, 1.0))
			// 视角
			const camera = new PerspectiveCamera(75, canvas.width / canvas.height, 0.1, 100);
			camera.position.set(0, 5, 10);
			// 渲染器
			const renderer = new WebGL1Renderer({ canvas, antialias: true, alpha: true })
			renderer.outputEncoding = sRGBEncoding
			renderer.setSize(canvas.width, canvas.height)
			renderer.setPixelRatio($window.devicePixelRatio)
			// 控制器
			const controls = new OrbitControls(camera, canvas);
			controls.enableDamping = true
			controls.dampingFactor = 0.25;// 动态阻尼系数 就是鼠标拖∂拽旋转灵敏度
			controls.enableZoom = true  // 是否可以缩放
			// 模型加载器
			// this.gltfLoader = new GLTFLoader()
			// this.gltfLoader.loadAsync('你的glb模型的url',res=>{
			// 	console.log('---进度--',res)
			// }).then((gltf) => {
			// 	gltf.parser = null;
			// 	const child = gltf.scene;
			// 	child.scale.set(0.1,0.1,0.1)
			// 	scene.add(child);
			// 	console.log('---在线渲染--',gltf)
			//   })
			
			//obj模型加载
			const loader = new OBJLoader()
			loader.load('obj模型的url', (object) => {
				object.traverse((child) => {
				              child.material = new THREE.MeshLambertMaterial({ 
				                  color:0xA9A9A9,
				                  side:THREE.DoubleSide,
				              });
				          });
				object.scale.set(0.1, 0.1, 0.1); // 变小一点
				object.position.set(0, -10, 0)
				scene.add(object);
			}, () => {
			}, () => {
			});
			
		  // 添加坐标系
		  const axesHelper = new THREE.AxesHelper(10);
			scene.add(axesHelper);
		  const render = () => {
			if (!this.disposing) this.frameId = $requestAnimationFrame(render)
			controls.update()
			renderer.render(scene, camera);
		  }
		  render()
		})
	},
	onUnload() {
		this.disposing = true
			$cancelAnimationFrame(this.frameId)
			PLATFORM.dispose()
	}, 
	methods:{
		onTX(e) {
		    this.platform.dispatchTouchEvent(e)
		  },
	}
}



</script>

<style>
	
</style>

最后的效果就是能够看到一个坐标系,并且可以移动,模型的话就自己去导入吧~

uni-app微信小程序3D化实战:THREEJS适配与模型加载全解析 本文详细解析了在uni-app微信小程序中实现3D化的实战技巧,重点介绍了特制版THREEJS的适配与模型加载方案。通过改造THREEJS以适配小程序环境,开发者可以高效加载3D模型并实现交互控制,同时提供了性能优化和常见问题排查的实用指南,助力开发者快速掌握小程序3D开发。 阅读详情

相关推荐

uni-app微信小程序集成THREEJS:从环境适配到3D模型渲染实战

本文详细介绍了如何在uni-app微信小程序中集成THREEJS实现3D模型渲染,包括环境适配、基础场景搭建、模型加载与交互控制等关键步骤。通过改造版THREEJS和实战代码示例,帮助开发者解决小程序环境下的WebGL渲染难题,适用于电商展示等3D可视化场景。

weixin_33735077的博客 360

如何在小程序中优雅地使用 three.js

Three.js Platform Adapter 是一款专为 小程序 / 小游戏 设计的 three.js 兼容库, 它用于解决小程序在开发 3D 场景时普遍遇到的一些问题,增加开发者的开发效率和体验。

qq_26482581的博客 4863

关于在微信小程序使用WebglCanvas和ThreeJs开发的二三事(一)

最近应公司项目需求要在微信小程序上进行3D模型渲染,还要调用微信摄像头所以不能直接上webview只能使用微信的WebglCanvas来做。过程中踩了一些坑,现在功能基本达到所以打算记录下遇到的问题与解决办法思路,希望对自己和也在微信WebglCanvas上踩坑的小伙伴所有帮助,也希望官方可以及时填坑。 在开发中遇到的问题大致如下: 动态调整画布的大小,位置。 ThreeJs的引入与使用。 ...

geshu12138的博客 5804

微信小程序集成three.js--5.加载外部模型

微信小程序集成three.js加载外部模型

3D模型素材库 1999

关于在微信小程序使用WebglCanvas和ThreeJs开发的二三事(二)

书接上文,在解决了canvas后让我们来正式进入ThreeJs部分。这个部分大致分为: ThreeJs的引用 gltf模型贴图加载与渲染 控制模型的旋转平移 一 ThreeJs的引用 官方已经出了ThreeJs小程序 WebGL 的适配版本,按照官方的教程操作即可。 https://developers.weixin.qq.com/miniprogram/dev/extended/uti...

geshu12138的博客 3270

微信小程序集成threejs-miniprogram的完整构建指南

本文详细介绍了如何在微信小程序中集成threejs-miniprogram,从环境准备、安装依赖到构建npm的完整流程,并提供了基础集成代码和性能优化技巧。通过实战案例,帮助开发者快速掌握在小程序中使用Three.js实现3D效果的方法,解决常见问题如白屏和纹理加载异常。

weixin_33686714的博客 484

Three.js微信小程序适配版:快速打造专业3D场景的完整指南

threejs-miniprogram是专为微信小程序环境优化的Three.js适配版本,让开发者能够在小程序中轻松集成专业级3D图形渲染能力。基于Three.js 0.108.0核心深度定制,完美适配小程序渲染架构,支持模型加载、光照系统、相机控制等完整3D特性,为小程序开发带来前所未有的视觉体验。 ## 🚀 核心优势解析 ### 轻量化引擎设计 相比原生Three.js,threejs-

gitblog_00631的博客 1294

小程序设计中的3D效果:Three.js集成方案

随着用户对交互体验要求的提升,3D效果在电商商品展示(如360°查看运动鞋)、教育课件(如3D分子结构)、游戏化营销(如AR红包)等场景中越来越常见。但小程序由于其“双线程架构”限制,传统H5的3D开发方案无法直接复用。本文将聚焦微信小程序(主流市场占有率超80%),详细讲解Three.js的集成方案,覆盖从基础概念到项目实战的全流程。

小程序开发 1423

threejs-miniprogram项目集成:如何将Three.js功能融入现有小程序

Three.js是一款强大的3D图形库,而threejs-miniprogram项目则是它的微信小程序适配版本。通过threejs-miniprogram,开发者可以轻松地在微信小程序中集成Three.js的3D渲染功能,为小程序增添更加丰富的视觉体验。 ## 快速安装threejs-miniprogram的方法 要在现有小程序项目中集成threejs-miniprogram,首先需要进行安装

gitblog_01051的博客 609

threejs-miniprogram:微信小程序改编版Three.js

threejs-miniprogram Three.js 小程序 WebGL 的适配版本。 使用 可参考 example 目录下的示例项目或参照以下流程: 通过 npm 安装 npm install --save threejs-miniprogram 安装完成之后在微信开发者工具中点击构建 npm。 导入小程序适配版本的 Three.js import {createScopedThreejs} from 'threejs-miniprogram' Page({ onReady() { wx.createSelectorQuery() .select('#webgl') .node() .exec((res) => { const canvas = res[0].node // 创建一个与 canvas 绑定

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧)

本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。

weixin_29327977的博客 600

如何在小程序中快速集成3D渲染能力?threejs-miniprogram实战解析

threejs-miniprogram是Three.js的微信小程序适配版本,为小程序开发者提供了专业级的3D图形渲染能力。通过简单的API调用,即可在小程序中创建令人惊艳的3D效果,无需复杂配置即可实现模型加载、光照系统和交互控制。 ## 🎉 项目亮点概览 threejs-miniprogram基于Three.js 0.108.0版本深度优化,专为小程序环境打造。相比原生Three.js,

gitblog_00541的博客 1205

将一维数据(序列)转化为二维数据(图像)的方法汇总GAFS, MTF, Recurrence plot,STFT

虽然深度学习方法(1D CNN, RNN, LSTM 等)可以直接处理一维数据,但是当前的深度学习方法主要还是处理二维结构数据的,特别是在计算机视觉CV以及自然语言处理NLP领域,各种各样的方法层出不穷。因此,如果能够将一维序列数据转化为二维(图像)数据, 则可以直接结合CV以及NLP领域的方法,是不是很有趣! GAF, GASF, GADF, MTF, Recurrence Plot, STFT, 短时傅里叶变换

MasterQKK 5万+

Three.js小程序适配版调试优化指南:解决3D渲染常见问题

在小程序中使用Three.js进行3D渲染时,threejs-miniprogram是一个强大的工具,但开发过程中可能会遇到各种调试和优化挑战。本文将为新手和普通用户提供完整的调试指南和优化技巧,帮助您快速解决小程序3D渲染中的常见问题。 ## 🎯 为什么选择threejs-miniprogram? threejs-miniprogram是Three.js的微信小程序适配版本,它让开发者能够

gitblog_00858的博客 337

dify源码本地部署,dify k8s部署

Dify.AI 是一款简单易用且开源的 LLMOps 平台,帮助开发者更简单、更快速地创建 AI 应用。它的核心理念是通过可声明式的 YAML 文件定义 AI 应用的各个方面,包括 Prompt、上下文和插件等。Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能。这些功能使得开发者能够在数天内完成 AI 应用的开发,或将 LLM 快速集成到现有应用中,并进行持续运营和改进。

shykevin的博客 1015

OMNeT++入门指南:从tictoc1到tictoc18的实例解析与实战演练

本文是OMNeT++网络仿真框架的入门实战指南,详细解析了从tictoc1到tictoc18的经典示例。内容涵盖OMNeT++的下载安装、核心三文件(.ned, .cc, .ini)的编写、模块化建模、自定义消息、数据统计与可视化,以及参数化批量仿真等核心技能,帮助读者从零开始掌握这一强大的网络仿真工具。

weixin_29228781的博客 329

THREEJS 在 uni-app 中使用(微信小程序)

使用 three.weapp.js 开发微信小程序3D页面

wisdom_Zheng的博客 8641

【Anaconda】conda国内镜像源快速配置指南(清华/阿里云)

本文详细介绍了如何为Anaconda配置国内镜像源(清华/阿里云),以显著提升conda包下载速度并减少安装失败率。通过分步指南和实用技巧,帮助开发者快速完成配置,优化Python开发环境。

weixin_33725722的博客 1486

threejs-miniprogram完整指南:从零开始构建微信小程序3D应用

threejs-miniprogram是Three.js的微信小程序适配版本,让开发者能够在微信环境中轻松实现高质量的3D交互体验。本文将带你从环境搭建到实际案例开发,掌握小程序3D应用开发的核心技能。 ## 📦 快速安装:3分钟配置开发环境 ### 1. 准备工作 确保已安装微信开发者工具和Node.js环境。通过以下命令克隆项目仓库: ```bash git clone https://

gitblog_00196的博客 786

保姆级教程:在Ubuntu 20.04上从零搞定ROS Noetic和RealSense驱动,为无人机开发铺路

本文提供了一份详细的Ubuntu 20.04环境下ROS Noetic和RealSense驱动安装指南,专为无人机开发环境搭建设计。从系统配置、ROS安装到RealSense驱动集成,涵盖所有关键步骤和常见问题解决方案,帮助开发者快速搭建自主空中机器人开发平台。

weixin_30329623的博客 65

Android12 适配 usb 触屏

在 Android 系统中,输入设备 IDC(Input Device Configuration)设备描述文件(.idc)是用于配置和定义输入设备行为和属性的文本文件。 该文件通常在`/system/usr/idc/` 或 `/vendor/usr/idc/`,具体位置因芯片厂商SDK而异。一般情况此类文件是预置到系统,开发者 root 权限才能修改这些文件。输入设备 IDC 设备描述文件在 Android 系统中起到了识别、配置、映射和定制输入设备的作用,使得系统能够准确解析和处理各种输入设备的事件,提

weixin_35723192的博客 1233

小程序使用THREEJS(尝新)

小程序使用THREEJS(尝新)准备所需资源项目起步功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图 准备所需资源 当然了,我们是尝的THREEJS,那当然需要准备的首要“食材”就是threejs相关的静态资源。可以参考相关github上的开源代码。

weixin_44070427的博客 2914

机器学习笔记 - 神经辐射场(NeRF)的简要概述

神经辐射场十分重要。在表示和渲染 3D 场景领域,神经辐射场 (NeRF) 在准确性方面取得了巨大突破。给定底层场景的多个图像,NeRF 可以从任意视点重建该场景的高分辨率、2D 渲染图。与局部光场融合 (LLFF) 和场景表示网络 (SRN) 等现有技术相比,NeRF 更能够捕获场景外观和几何形状的复杂组成部分(例如,依赖于视图的反射和复杂的材料)。NeRF的研究目的是合成同一场景不同视角下的图像。

学以致用 知行合一 1693

threejs-miniprogram:微信小程序中的3D革命,如何在小程序中使用Three.js

想要在微信小程序中创建令人惊叹的3D视觉效果吗?threejs-miniprogram为你打开了通往3D世界的大门!🚀 这个项目是Three.js的微信小程序适配版本,让你能够在微信小程序中轻松实现复杂的3D图形渲染和交互体验。 ## 为什么选择threejs-miniprogram? 在移动端应用中,3D效果能够极大地提升用户体验和产品吸引力。然而,微信小程序环境对WebGL的支持有限,传

gitblog_00373的博客 491

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

记录--uniapp微信小程序引入threeJs并导入模型

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 我的需求是使用uniapp写微信小程序,在小程序中使用threeJs就行了,目前暂不考虑兼容app什么的。 1.引入小程序版的threejs库实现 2.使用webview实现(推荐) 重点 我的建议是使用这个库https://github.com/deepkolos/three-platformize为什么?我试了unia...

林恒的博客 2408

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

如何在微信小程序中实现专业3D效果:threejs-miniprogram完整教程

threejs-miniprogram是专为微信小程序环境优化的Three.js适配版本,让开发者能够在小程序中轻松集成3D图形渲染能力。该项目完美适配小程序渲染环境,支持模型加载、光照系统、相机控制等完整3D特性,为小程序开发带来全新的视觉体验。 ## 项目核心优势速览 ### 小程序专用3D引擎 基于Three.js核心能力深度优化,完美适配微信小程序的渲染环境。通过[src/index.

gitblog_00902的博客 956

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 解决threejs导入fabric画布时出现的跨域问题
下一篇: 微信小程序 canvas 处理图片的缩放移动旋转问题
天空原海
博客等级 码龄3年 1785粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值