three-platformize 微信小程序 uniapp 使用截图功能

突破兼容难题:在uni-app微信小程序中高效集成three-platformize加载3D模型 本文详细介绍了如何在uni-app微信小程序中高效集成three-platformize加载3D模型,解决兼容性问题。通过对比threejs-miniprogram和three-platformize的性能差异,展示了后者在OBJ模型加载、帧率和内存占用方面的优势。文章提供了从环境配置到核心代码实现的完整指南,帮助开发者快速掌握3D模型加载技术。 阅读详情

最近需要将3d场景进行截图,但是网上的各种各样,看的我一团乱麻,因此在解决完后就将这些简单的分享一下;

原理:将3维场景的那个canvas中的像素提取出来,找一个空的canvas二维画布放上去,然后用二维画布的那个进行截图

实际操作:

saveImage(){
			const [data, w, h] = screenshot(renderer, scene, camera, WebGLRenderTarget);
			const ctx = helperCanvas.getContext('2d')
			const imgData = helperCanvas.createImageData(data, w, h);
			helperCanvas.height = imgData.height;
			helperCanvas.width = imgData.width;
			ctx.putImageData(imgData, 0, 0);
			const imgDataFromCanvas = ctx.getImageData(0, 0, w, h)
			const hasPixel = imgDataFromCanvas.data.some(i => i !== 0)
			wx.canvasToTempFilePath({
				// @ts-ignore
				canvas: helperCanvas,
				success(res) {
					wx.previewImage({
						urls: [res.tempFilePath],
					})
				}
			})
		},

说一下代码部分

import { screenshot } from 'three-platformize/tools/screenshot'

import { WebGLRenderTarget } from 'three';

是直接从three-platformize中导入进来的

然后放入场景、相机、渲染器、以及一个WebGLRenderTarget

然后当执行saveImage这个方法时就能够将当前相机看到的变成一个图片临时保存,也就是那个res.tempFilePath,

然后就是我通过this. 的方式一直获取不到data中的方法,因此呢就把渲染器什么的都放入到了全局变量中

注意:代码是在uniapp vue3中使用的,微信小程序原生的当然也是可以用的了

three-platformize:一个让 THREE 平台化的项目,目前已适配微信,淘宝,头条小程序,微信小游戏 three-platformize 一个让 THREE 平台化的项目 目前已适配微信,淘宝,字节小程序 支持 tree shaking(需用 webpack,rollup 等构建工具) VSCode types 正常,能正常访问各个类的定义 适配 examples/jsm/**/*.js,types 正常 可升级、降级版本或使用自定义 THREE 微信小程序 IOS 内存优化,更少切页面导致的崩溃 支持自定义新平台适配,参考 WechatPlatform 编写适配器即可 支持微信插件跨插件复用 Special Sponsors 云图三维-在线三维CAD设计软件 适配情况 微信 淘宝 字节 小程序真机 :check_mark: :check_mark: :check_mark: 小程序模拟器 :check_mark: :check_mark: 小游戏真机 :check_mark: 小游戏模拟器 :check_mark: 招聘前端、WebGL、图形学算法,欢迎投简历 DEMO 注:运行 DEM 立即下载

相关推荐

three-platformize-demo-wechat:三平台微信小程序演示

三平台微信小程序DEMO 运行 请使用最新版本的微信开发工具打开,切换到自己的测试appId即可运行,打开调试模式 如果需要修改代码,可按照已下步骤整合 // 安装依赖 > npm i // 运行构建 > npm run dev // 小程序打开即可 内存测试结果 用例1:重复加载一个有纹理的glb 安卓表现正常,持久不崩溃IPad连续也不崩溃(15分钟),但是加载GLB时长十分长,5000ms +模型models / gltf / Soldier.glb IPAD来回进出页面崩溃

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

我的需求是使用uniapp写微信小程序,在小程序中使用threeJs就行了,目前暂不考虑兼容app什么的。1.引入小程序版的threejs库实现2.使用webview实现(推荐)

hzqzzz的博客 1万+

three-platformize-demo-wechat-simple:最基本的three 微信小程序demo

three-platformize 微信小程序DEMO(最简) 最基本的threejs demo, 显示一个gltf模型,小程序包大小550kb 运行 请使用最新版本的微信开发工具打开,切换到自己的测试appId即可运行,打开调试模式 如果需要修改代码,可按照已下步骤构建 // 安装依赖 > npm i // 运行构建 > npm run dev // 小程序打开即可

【亲测免费】 探索未来3D世界:深入理解`three-platformize`

探索未来3D世界:深入理解three-platformize 在这个数字化的时代,3D技术和WebGL的应用正逐渐改变我们的在线体验。three-platformize是一个创新的项目,它将Three.js库与现代Web开发框架(如React和Vue)深度整合,为开发者提供了一个无缝对接3D场景到Web平台的解决方案。 项目简介 three-platformize 是一个围绕Three.js构建的...

gitblog_00068的博客 938

three-platformize微信小程序demo.zip

three-platformize微信小程序demo.zip

告别手动拖拽!PyQt5/PyQt6 QTableView列宽自适应窗口的三种实战方案(附性能对比)

本文详细介绍了PyQt5/PyQt6中QTableView列宽自适应窗口的三种实战方案,包括Stretch模式、resizeEvent手动计算和ResizeToContents模式,并附有性能对比。帮助开发者解决窗口大小变化时列宽不变的常见问题,提升用户体验和开发效率。

weixin_42538752的博客 232

使用three-platformize实现跨平台3D互动体验:微信小程序实战

使用three-platformize实现跨平台3D互动体验:微信小程序实战 去发现同类优质开源项目:https://gitcode.com/ 本文将向您介绍一个精彩的开源项目:。这是一个基于Three.js和微信小程序的项目,旨在展示如何在微信小程序中创建高质量、交互式的3D场景。 项目简介 three-platformize-demo-wechat是一个实践性的教程和示例,它演示了如何将Thr...

gitblog_00031的博客 1760

笔记——Oracle19c

Oracle阅读笔记

weixin_63819458的博客 1349

微信小程序版threejs的使用

注意:我的操作均是使用uniapp的方式使用的,直接在微信开发者工具中也是可以使用的,只是导入依赖的方式可能不太一样,我没试过~最后的效果就是能够看到一个坐标系,并且可以移动,模型的话就自己去导入吧~目录中应该是这样的,package.json中应该是有这个依赖的。

Hacker_Hacker007的博客 4211

别再手动转格式了!用Java+LibreOffice命令行实现Word批量转PDF(附Docker部署避坑指南)

本文详细介绍了如何利用Java和LibreOffice命令行实现企业级Word批量转PDF的自动化解决方案,包括多线程优化、Docker化部署及常见问题排查。通过代码示例和实战经验,帮助开发者高效处理文档转换需求,提升工作效率并避免常见陷阱。

552

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

uniapp中使用threejs加载几何体

我试了uniapp推荐的和threejs-miniprogram这个小程序官方库,都加载不出来我的obj模型。所有我推荐不要用obj模型最好,挺多都支持GLTF模型的,但是我不能改。安装,使用pnpm比较块。我的建议是使用这个库。

qq_34093387的博客 1033

给STM32供电,别只接VDD和GND!VBAT、VDDA这些引脚不接会怎样?

本文深入解析STM32电源设计中VBAT与VDDA引脚的关键作用,揭示仅连接VDD和GND可能导致的ADC精度下降、RTC功能异常等问题。通过实测数据对比不同连接方案,提供包括滤波电路设计、PCB布局布线和双电源自动切换在内的实用解决方案,帮助开发者优化系统稳定性与性能。

weixin_30521161的博客 626

uniapp-微信小程序 长截图功能,此功能价值5000~1W

微信小程序实现当前页面长截图功能

weixin_57127914的博客 6786

智能车竞赛必备:STC32G144K开源库实战指南(含总钻风摄像头配置)

本文为智能车竞赛参赛者提供了一份基于STC32G144K微控制器与逐飞开源库的实战开发指南。文章详细介绍了从开发环境搭建、总钻风摄像头驱动配置与图像采集优化,到核心控制算法实现与多任务调度等关键步骤,旨在帮助队伍快速构建稳定高效的视觉处理系统,提升竞赛竞争力。

weixin_29191081的博客 710

NA400与昆仑通态MODBUS/TCP通讯调试说明

点击增加设备通道,弹出窗口进行设置,通道类型选择“0区输出继电器”,通道地址为1,通道个数为1,读写方式为读写。点击增加设备通道,弹出窗口进行设置,通道类型选择“4区输出寄存器”,数据类型选择“16位 无符号二进制”,通道地址为21001,通道个数为1,读写方式为读写。5.添加设备通道:双击莫迪康MODBUSTCP子设备,点击添加设备通道,根据Modbus规约地址表进行参数的设置,表格可在NAPro软件帮助中查看,如下图所示。然后可以在设备通道调试数据中观察到Q1的值为1,NW1的值678,表示通讯成功。

weixin_44281509的博客 2490

threejs 微信小程序原生版本的使用 obj模型的加载

我使用的是three-platformize,可以通过npm install的方式直接安装的,小程序原生的npm我还没有试过,加载进去后用THREE替换掉common_vendor即可,加载器那里需要导入OBJLoader,然后就可以直接用了。

Hacker_Hacker007的博客 969

C++笔记之emplace_back(),push_back()性能比较i++ 、 ++i

操作是否需要临时对象/拷贝性能需要(构造临时对象)较慢不需要(直接构造)较快i++需要(保存旧值)对于内置类型无影响,但对于自定义类型(如迭代器、大对象)会有拷贝开销++i不需要相对更快(尤其是自定义类型)都存在"是否需要额外的临时对象/拷贝"这一性能差异点和++i都是更高效的版本(避免临时对象/拷贝)和i++都可能产生额外的临时对象(前者构造临时对象,后者保存旧值)对于内置类型(如int),i++和++i性能几乎没有差异(编译器会优化);但对于自定义类型(尤其是迭代器等重量级对象),

小勇博客 96

Three20研究院之解决真机IOS6在Xcode4.5下无法编译与IOS设备自动旋转问题(九)

之前一直都是在Xcode4.4下使用Three20开发框架,今天升级到4.5了发现在IOS6下无法将程序编译到真机上,还有就是Three20在IOS6下旋转的代码全部失灵了,非常奇怪。今天抽了一点时间研究了一下,本文仅作为自己备份! 首先我们解决无法编译的问题。 three20的开发包我用的是gitbug上的https://github.com/facebook/three20官网...

移动开发记录 131

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

小程序AR踩坑记录

使用微信自带的VisionKitAPI提供 AR 能力。官方手册地址:虽然官方提供了demo代码,但是埋藏的暗坑还是不少。特此总结一下。

weixin_48408736的博客 3490

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

微信小程序拍照截图,本地上传截图

【代码】微信小程序拍照截图,本地上传截图。

weixin_44936767的博客 1977

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

微信小程序防录频截屏ios+android

微信小程序防止截屏录频

Yannnnnm的博客 4406

一分钟解决微信小程序截图(截屏问题)

近期 忙着新产品的开发,已经很久没更新了。这次又来跟大家送福利的,这次是关于小程序截图的问题。相信有的小伙伴又遇到产品经理要求做一个截图功能的,结果大家搜了半天还是一无所获。这就带你们了解微信小程序的前因后果,话不多说上干货。 第一,首先微信是没有提供小程序直接截图的api的,只提供了监听截图事件 ...

冲冲冲 3万+
上一篇: 微信小程序 调色板
下一篇: 程序员如何快速修改图片颜色
天空原海
博客等级 码龄3年 1785粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值