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

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

直接上代码,

<canvas class="webgl" type="webgl" id="gl" bindtouchstart="onTX" bindtouchend="onTX" bindtouchmove="onTX" style="width:100vw;height:90vh"></canvas>
const common_vendor = require("../../common/vendor.js");

Page({

  onLoad() {
    const query = common_vendor.index.createSelectorQuery().in(this);
    query.select("#gl").boundingClientRect((x) => {
      this.win = x;
    }).exec();
    common_vendor.index.createSelectorQuery().select("#gl").node().exec((res) => {
      const canvas = this.canvas = res[0].node;
      this.platform = new common_vendor.WechatPlatform(canvas);
      common_vendor.PLATFORM.set(this.platform);
      const scene = this.scene = new common_vendor.Scene();
      scene.background = new common_vendor.Color(16777200);
      scene.add(new common_vendor.AmbientLight(16777215, 1));
      scene.add(new common_vendor.DirectionalLight(16777215, 1));
      const camera = this.camera = new common_vendor.PerspectiveCamera(75, canvas.width / canvas.height, 0.1, 1e3);
      camera.position.set(0, 7, 15);
      const renderer = new common_vendor.WebGL1Renderer({ canvas, antialias: true, alpha: true });
      renderer.outputEncoding = common_vendor.sRGBEncoding;
      renderer.setSize(canvas.width, canvas.height);
      renderer.setPixelRatio(common_vendor.$window.devicePixelRatio);
      const controls = new common_vendor.OrbitControls(camera, canvas);
      controls.enableDamping = true;
      controls.dampingFactor = 0.25;
      controls.enableZoom = true;
      var textureLoader = new common_vendor.TextureLoader();
      var texture = textureLoader.load("https://files.ifok.cn/m2photo");
      texture.minFilter = common_vendor.LinearFilter;
      var bump = textureLoader.load("https://files.ifok.cn/security_sign/design_fabric_skin/fabric004.png");
      const loader = new common_vendor.OBJLoader();
      loader.load("https://files.ifok.cn/m2_obj/x.obj", (object) => {
        object.traverse((child) => {
          child.material = new common_vendor.MeshStandardMaterial({
            color: 11119017,
            side: common_vendor.DoubleSide,
            map: texture,
            bumpMap: bump,
            bumpScale: 2
          });
        });
        object.scale.set(0.1, 0.1, 0.1);
        object.position.set(0, -10, 0);
        scene.add(object);
        this.clo_object = object;
      }, () => {
      }, () => {
      });
      const axesHelper = new common_vendor.AxesHelper(10);
      scene.add(axesHelper);
      this.raycaster = new common_vendor.Raycaster();
      this.mouse = new common_vendor.Vector2();
      const render = () => {
        if (!this.disposing)
          this.frameId = common_vendor.$requestAnimationFrame(render);
        controls.update();
        renderer.render(scene, camera);
      };
      render();
    });
  },

  onTX(e) {
    this.platform.dispatchTouchEvent(e);
  }
})

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

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.zip

three-platformize微信小程序demo.zip

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

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

gitblog_00068的博客 938

液冷方式介绍

如果将直径在1~100nm的颗粒悬置在传热流体(例如:水、乙烯、乙二醇等)中时,其传热能力会得到提升,因为大多数固体材料的热导率要大于液体,因此由颗粒、流体组成的混合物热导率也高于液体本身的热导率,由此制成的流体,我们称之为纳米流体。金属冷管的液体工质蒸散量几乎为0,而柔软材质的管道则会产生液体的蒸散,在封闭式循环系统中,为了弥补液体工质的蒸散,必须定期在系统中补充液体工质。——我们之前说过,材料的导电和导热的机制大致是类似的,所以导电能力更强的金属往往具有更好的导热能力。

制冷技术咨询与服务的博客 2036

IFIX数据库Datebase当前值问号

IFIX数据库Datebase当前值问号,已解决,亲测有效 在OPC PowerTool有数据的情况下,IFIX数据库Datebase当前值显示???? 问题分析及解决方法 我的IFIX5.8版本,其它版本可参考 打开IFIX工作台:应用程序–任务控制–I/O驱动–OPC Client;查看OPC驱动是否被禁用,点击启动,变成激活状态即可;若点击启动无法激活OPC驱动,需要重新安装OPC驱动,方法如下: 下载I/O Driver文件 下载链接:https://download.youkuaiyun.com/down

Ron_Tso的博客 2759

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

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

gitblog_00031的博客 1760

数字IC后端项目典型问题之后端实战项目问题记录

数字IC后端培训教程之数字后端实战项目问题debug及解决方案记录

weixin_37584728的博客 1715

微信小程序版threejs的使用

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

Hacker_Hacker007的博客 4211

【pprof】简要学习教程

基本介绍 pprof 是在做性能优化前的性能分析工具。 安装: go get -u github.com/google/pprof 分析工具 go tool pprof 是命令行指令,用于分析 Profiling 数据,源数据可以是 http 地址,也可以是已经 dump 下当 profile 文件;查看模式可以命令行交互模式,也可以是浏览器模式(-http 参数)。 两种应用 服务型应用 _ "net/http/pprof" 包,专用于采集 web 服务 运行数据的分析。即在运行的服务中通过 API .

码农印象 883

移花接木,玩转CANoe的几种扩展接口应用(五)——串口设备

近期看到粉丝朋友在CANoe自动化测试方面的关注度很大,今天就围绕这个做一个专题,总结一下以往项目上用过的几种CANoe扩展接口,分享出来希望对相关领域的网友有所帮助。本文是该专题的第五篇文章,主要讲解了串口设备的功能配置、连接方法、配置方法、调用方法,最后分析了这种扩展借口应用的特点和适用场景。

Mr.Cssust的博客 2369

【微信小程序】Three.js 加载3d模型

微信小程序实现从外部加载3d模型 1.3d模型的几种格式? 2.怎样加载3d模型? 1.模型的格式 小程序支持从外部加载3d模型的几种格式有: a.obj格式 b.gltf格式 c.glb格式 d.fbx格式 就列举这几种 2.加载3d模型 用 gltf 格式的模型 (1)首先下载 three.js github地址 下载的文件目录里 threejs-miniprogram-master\exa...

牛哞哞杂记 3万+

Python调用CANoe

我们可以创建CANoe应用程序对象,打开配置文件,启动模拟,发送和接收消息,并在完成后关闭CANoe应用程序。这使得我们能够使用Python自动化执行测试任务,并集成CANoe的功能到我们的Python应用程序中。CANoe是一款功能强大的汽车网络仿真和测试工具,它能够模拟和分析汽车网络通信,并提供丰富的测试功能。通过Python编程语言,我们可以方便地调用CANoe的API,实现自动化测试和集成CANoe的功能到我们的Python应用程序中。在CANoe中,我们可以为不同的汽车网络创建配置文件。

AzqLinux的博客 1287

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

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

林恒的博客 2408

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析

ISP(Image Signal Processor)芯片作为现代影像系统的核心组件,负责对图像传感器输出的原始信号进行后期处理。ISP的主要功能包括线性纠正、噪声去除、坏点修复、色彩校正以及白平衡调整等,这些处理步骤对于提高图像质量和视觉效果至关重要。随着科技的进步,ISP芯片不仅提升了图像的清晰度和色彩准确性,还通过高效的算法增强了拍摄体验,尤其是在低光环境下的表现。

专注:太空算力、AI infra、异构调度、大模型成本工程 1223

使用threejs导入外部模型与滑动查看【微信小程序】-裁-

1:官方提供的安装方法是通过npm安装构建,如下: 新建一个页面,项目目录内置终端打开(注意目录!,例如在psges的父目录打开),通过 npm 安装 npm install --save threejs-miniprogram@0.0.5 安装完成之后在微信开发者工具中点击构建 npm。 一下是一个正方体模型的小例子: index.js import {createScopedThreejs} from 'threejs-miniprogram' Page({ data

shaojiuli的博客 2926

jre9下载 jdk9

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

uniapp微信小程序使用threejs加载模型,使用加载器加载

git上controls文件目录:threejs.miniprogram/examples/jsm/controls/git上loader文件目录:threejs.miniprogram/examples/jsm/loaders/

qq_42261562的博客 1569

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

uni-app IOS的threeJS本地obj、mtl文件的读取

uni-app IOS的threeJS本地obj、mtl文件的读取 最近有个项目获取的是基于3D模型的obj文件与材质mtl文件的获取进行渲染控制,使用的混合开发框架是uniapp,其中遇到的问题是IOS端的obj、mtl文件的获取有问题,不知道是不是权限的问题导致相对路径读取不出来,所以改用后后h5+的sdk来获取文件的路径,然后分配给OBJLoader和MTLLoader,从而在IOS端读取出obj文件和mtl文件,大致方法如下: plus.io.resolveLocalFileSystemURL("_

u011199972的博客 4249

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

微信小程序 IOS ThreeJs 加载obj模型,使用MTLLoader加载贴图,整个模型是黑色

1.检查MTLLoader版本是否与小程序版本的ThreeJS匹配 2.检查模型的.mtl文件,所有"\" 改动成 "\\",或者改动成"/" 3.贴图分辨率改成2的整数幂,长宽分辨率一致, 如512*512,1024*512 4.如果还是不行降低贴图分辨率 ...

fcj863121318的博客 2035

three.js加载obj模型

&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;    &lt;meta charset="UTF-8"&gt;    &lt;script type="text/javascript" src="js/jquery-2.0.3.min.js" &gt;&lt;/script&gt;    &lt;scr

谧旅c的博客 2115

微信小程序加载外部3D模型利器:miniprogramThree

微信小程序加载外部3D模型利器:miniprogramThree 【下载地址】miniprogramThree微信小程序加载外部3d模型 miniprogramThree 是一个微信小程序示例项目,专注于展示如何使用 threejs 在微信小程序中加载和展示外部3d模型。通过该项目,开发者可以轻松学习如何将3d模型集成到...

gitblog_06777的博客 746

【亲测免费】 threejs.miniprogram:为微信小程序带来三维世界的魅力

threejs.miniprogram:为微信小程序带来三维世界的魅力 项目介绍 threejs.miniprogram 是一个旨在将著名的 three.js 库移植到微信小程序的开源项目。three.js 是一个功能强大的 JavaScript 3D 库,它使用 WebGL 渲染器提供出色的三维图形表现。通过 threejs.miniprogram,开发者可以在微信小程序中轻松引入 three....

gitblog_00673的博客 780

threejs-模型贴图颜色与图片存在色差 问题解决方案

解决threejs贴图存在色差问题(浏览器和微信小程序适用)

Hacker_Hacker007的博客 1153

探索3D新维度:微信小程序专属Three.js加载器

探索3D新维度:微信小程序专属Three.js加载器 去发现同类优质开源项目:https://gitcode.com/ 在数字时代的大潮下,三维视觉体验已成为提升应用吸引力的关键。今天,我们为你揭秘一个专为移动端微应用场景定制的神器——《微信小程序专属Three.js 3D模型加载器》。这个项目以优化和创新为核心,旨在为微信小程序在内的移动端平台带来前所未有的3D体验。 项目技术分析 基于业界领先...

gitblog_09742的博客 487

小程序使用threejs第五篇—室内效果3D文件的加载,可旋转查看上下四周效果

在上一篇小程序使用threejs第四篇—加载3D模型中我们介绍了threejs加载几种3D模型,包括gltf、obj、glb等格式。但好像一直没有用的场景,最直观的场景应该是室内效果了。 解决思路 室内效果图一般用到一种.hdr格式的文件,这种文件可以在Poly Haven这个网站下载到,这样素材的问题我们就解决了; 由于这种格式的文件较大,放在小程序里不太现实,所以有自己服务器的可以把它放在服务器,没有的也没事,微信云开发给我们提供了很大的方便,传到云存储,用的时候把fileID换成临时下载路径是很完美

WeiHan_Seven的博客 3186
上一篇: go使用grpc编辑器 windows
下一篇: 微信小程序 调色板
天空原海
博客等级 码龄3年 1785粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值