首页 > 其他分享 >threejs 使用base64编码的图片作为贴图

threejs 使用base64编码的图片作为贴图

时间:2024-09-24 12:02:03浏览次数:7  
标签:贴图 threejs const image base64 THREE texture new

 使用base64作为贴图可以从接口直接传输(如果特别大需要压缩),可以省去很多操作

 

代码如下

// 纹理加载器
const texLoader = new THREE.TextureLoader();
const base64Str = "data:image/png;base64,...";
texLoader.load(base64Str, (texture) => {

        const aspectRatio = texture.image.width / texture.image.height;
        // 创建平面几何体
        const geometry = new THREE.PlaneGeometry(100 * aspectRatio , 100 ); // 根据比例放大

        // 创建材质
        const material = new THREE.MeshLambertMaterial({
            map: texture,
        });
// 创建网格对象
        const plane = new THREE.Mesh(geometry, material);
        scene.add(plane);
        })

渲染时需要在贴图加载完成后进行渲染,贴图需要光照才能显示
完整代码

 1  <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
 2     <script>
 3         // 创建场景
 4         const scene = new THREE.Scene();
 5 
 6         // 创建相机
 7         const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
 8         camera.position.z = 300;
 9 
10         // 创建渲染器
11         const renderer = new THREE.WebGLRenderer();
12         renderer.setSize(window.innerWidth, window.innerHeight);
13         document.body.appendChild(renderer.domElement);
14 
15         // 添加光源
16         const light = new THREE.DirectionalLight(0xffffff, 1);
17         light.position.set(0, 1, 1).normalize();
18         scene.add(light);
19 
20 
21 
22         // 纹理加载器
23         const texLoader = new THREE.TextureLoader();
24         const base64Str = "data:image/png;base64,..."
25         texLoader.load(base64Str, (texture) => {
26 
27         const aspectRatio = texture.image.width / texture.image.height;
28         // 创建平面几何体
29         const geometry = new THREE.PlaneGeometry(100 * aspectRatio , 100 ); // 根据比例放大
30 
31         // 创建材质
32         const material = new THREE.MeshLambertMaterial({
33             map: texture,
34         });
35 
36         // 创建网格对象
37         const plane = new THREE.Mesh(geometry, material);
38         scene.add(plane);
39         })
40 
41         // 渲染
42         function animate() {
43             requestAnimationFrame(animate);
44             renderer.render(scene, camera);
45         }
46         animate();
47 </script>
View Code

 

标签:贴图,threejs,const,image,base64,THREE,texture,new
From: https://www.cnblogs.com/hyj111/p/18428876

相关文章

  • 利用LRZ压缩与Base64编码实现高效文件上传
    引言在当今互联网时代,文件上传已成为众多在线服务不可或缺的一部分,尤其是在社交媒体平台上的照片分享和云存储服务中的文档管理等场景,高效且安全的文件上传机制对于保障用户体验至关重要。为此,本文将介绍一种结合了LRZ压缩工具与Base64编码技术的优化文件上传方案。通过......
  • 探索Base64奥秘:数据转换的神奇魔法师
    一、简介​Base64是一种基于64个可打印ASCII字符来表示二进制数据的编码方式,常用于需要通过文本数据传输、存储二进制数据的场景中。例如在前端开发中的使用场景有:在HTML和CSS中将图像文件转为Base64数据嵌入到文档中、在前后端JSON数据交互时,将文件转为Base64数据进行上......
  • C# base64转pdf + 上传至指定url
    base64topdf1usingSystem;2usingSystem.Collections.Generic;3usingSystem.IO;4usingSystem.Linq;5usingSystem.Text;6usingSystem.Threading.Tasks;78namespaceHS.Common.Helper9{10publicclassPdfHelper11{......
  • Go语言基础-常见编码(Json、Base64)
    编码jsonjson是go标准库里自带的序列化工具,使用了反射,效率比较低easyjson值针对预先定义好的json结构体对输入的json字符串进行纯字符串的截取,并将对应的json字段赋值给结构体easyjson-allxxx.go生成go文件中定义的结构体对应的解析xxx.go所在的package不能是mainfunce......
  • Threejs之看房案例(上)
    本文目录前言效果展示一、立方体模式1.1代码1.2代码解析1.3效果二、球形模式2.1代码2.2代码解析2.3效果前言Three.js是一个基于WebGL的JavaScript3D库,它允许在网页上创建和显示3D图形。在房地产行业中,Three.js常被用于实现全景看房案例,为用户提供沉浸式的......
  • base64
    importjava.nio.charset.StandardCharsets;importjava.util.Base64;publicclassBase64Example{publicstaticvoidmain(String[]args){StringoriginalString="oa:123456";//使用Base64编码器Base64.Encoderenc......
  • Threejs之看房案例(下)
    本文目录前言最终效果1、点精灵1.1添加点精灵1.2点精灵效果2、添加事件2.1鼠标移动事件2.1.1效果2.2鼠标点击事件2.2.1效果2.3切换互通3.完整代码前言在Threejs之看房案例(上)这篇博客中我们已经完成了大厅的3d观看效果,但是我们......
  • vulnhub(9):sickos1.2(深挖靶机的各个细节、文件管道反弹shell详解、base64编码反弹shell
    端口nmap主机发现nmap-sn192.168.148.0/24​Nmapscanreportfor192.168.148.131Hostisup(0.00020slatency).​131是新出现的机器,他就是靶机nmap端口扫描nmap-Pn192.168.148.131-p---min-rate10000-oAnmap/scan扫描开放端口保存到nmap/scan下​......
  • Java 中图片转换为 Base64
    importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.util.Base64;publicclassImageToBase64Converter{publicstaticvoidmain(String[]args){//指定要转换的图片路径StringimagePath="path......
  • 【CTF MISC】XCTF GFSJ1086 [简单] 简单的base编码 Writeup(Base64编码+循环解码+Base9
    [简单]简单的base编码你懂base编码吗?工具在线BASE92编码解码:https://ctf.bugku.com/tool/base92解法Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsW......