当前位置: 首页 > news >正文

使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件

前言

假设您正在现有项目中集成这些包,而该项目的构建工具为 Webpack 或 Vite。同时,您对 Three.js 和 React 有一定的了解。如果您发现有任何错误或有更好的方法,请随时留言。

安装

npm install three @types/three @react-three/fiber @react-three/drei @mkkellogg/gaussian-splats-3d

设置两个标头

gaussian-splats-3d内部使用Worker和SharedArrayBuffer(共享内存)。
对于顶级文档,需要设置两个标头来实现你网站的跨源隔离:

  • Cross-Origin-Opener-Policy 设置为 same-origin(来保护你的源站点免受攻击)
  • Cross-Origin-Embedder-Policy 设置为 require-corp 或 credentialless(保护受害者免受你的源站点的影响)
webpack设置标头
{"devServer":{"headers": {"Cross-Origin-Embedder-Policy": "require-corp","Cross-Origin-Opener-Policy": "same-origin"}}
}
vite设置标头
npm i -D vite-plugin-cross-origin-isolation
import { defineConfig } from "vite";export default defineConfig({plugins: [{name: "configure-response-headers",configureServer: (server) => {server.middlewares.use((_req, res, next) => {res.setHeader("Cross-Origin-Embedder-Policy", "require-corp");res.setHeader("Cross-Origin-Opener-Policy", "same-origin");next();});},},],
});

创建一个组件

useViewer.ts

import { useCallback, useEffect } from 'react';
import * as GaussianSplats3D from '@mkkellogg/gaussian-splats-3d';
import { Scene } from 'three';interface Options {scene: Scene;
}
export const useViewer= ({ scene }: Options) => {const init = useCallback(() => {const viewer = new GaussianSplats3D.DropInViewer();viewer.addSplatScenes([{path: 'assets/bonsai-7k-mini.splat',splatAlphaRemovalThreshold: 20}],true);scene.add(viewer);}, [scene]);useEffect(() => {init();}, []);
};
import React, { useRef } from 'react';
import { Canvas } from '@react-three/fiber';
import { OrbitControls } from '@react-three/drei';
import { PerspectiveCamera, Scene, Vector3 } from 'three';
import { useViewer } from '@/hooks/useWorkRoom';function setupCamera() {const camera = new PerspectiveCamera(65, window.innerWidth / window.innerHeight, 0.1, 500);camera.position.set(0, -4, 0);camera.lookAt(new Vector3().fromArray([0, 0, 0]));camera.up = new Vector3().fromArray([0, -1, -0.6]).normalize();return camera;
}function setupScene() {const scene = new Scene();return scene;
}export const Dashboard = () => {const scene = useRef<Scene>(setupScene());const camera = useRef<PerspectiveCamera>(setupCamera());useViewer({ scene: scene.current });return (<Canvas scene={scene.current} camera={camera.current}><OrbitControls /></Canvas>);
};export default Dashboard;

效果

在这里插入图片描述

相关文章:

使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件

前言 假设您正在现有项目中集成这些包&#xff0c;而该项目的构建工具为 Webpack 或 Vite。同时&#xff0c;您对 Three.js 和 React 有一定的了解。如果您发现有任何错误或有更好的方法&#xff0c;请随时留言。 安装 npm install three types/three react-three/fiber rea…...

Koa进阶:掌握中间件和参数校验的艺术

目录 一、首先下载依赖 二、在index.js中引入koa-parameter&#xff0c;一般挂载这个中间件时会放在注册请求体的后面 三、使用实例 四、如果跟我们所需求的参数不同&#xff0c;返回结果直接会返回422 koa-parameter一般是用来校验请求传过来的参数是否是自己所需要的的 G…...

开源共建 | 长安链开发常见问题及规避

长安链开源社区鼓励社区成员参与社区共建&#xff0c;参与形式包括不限于代码贡献、文章撰写、社区答疑等。腾讯云区块链王燕飞在参与长安链测试工作过程中&#xff0c;深入细致地总结了长安链实际开发应用中的常见问题及其有效的规避方法&#xff0c;相关内容多次解答社区成员…...

【网络】深入理解 HTTPS:确保数据传输安全的核心协议

目录 引言一、HTTPS的基本概念1.1 什么是 HTTPS&#xff1f;1.2 HTTPS 的工作原理1.3 图解&#xff1a;HTTPS 通信过程1.4 HTTPS 与 HTTP 的区别1.5 为什么 HTTPS 更加重要&#xff1f; 二、SSL/TLS协议的核心2.1 SSL/TLS 协议的作用2.2 SSL/TLS 的工作流程2.2.1 握手阶段2.2.2…...

C/C++中使用MYSQL

首先要保证下载好mysql的库和头文件&#xff0c;头文件在/usr/include/mysql/目录下&#xff0c;库在/usr/lib64/mysql/目录下&#xff1a; 一般情况下&#xff0c;在我们安装mysql的时候&#xff0c;这些都提前配置好了&#xff0c;如果没有就重装一下mysql。如果重装mysql还是…...

【GD32】(一) 开发方式简介及标准库开发入门

文章目录 0 前言1 开发方式选择2 标准库模板的创建3 遇到的问题和解决方法 0 前言 因为项目关系&#xff0c;需要使用GD32。之前对此早有耳闻&#xff0c;知道这个是一个STM32的替代品&#xff0c;据说甚至可以直接烧录STM32的程序&#xff08;一般是同型号&#xff09;&#x…...

轻松上手:使用Docker部署Java服务

文章目录 1. 什么是Docker&#xff1f;2. 为什么使用Docker部署Java服务&#xff1f;3. 如何使用Docker部署Java服务&#xff1f;步骤1&#xff1a;创建Dockerfile步骤2&#xff1a;构建Docker镜像步骤3&#xff1a;运行Docker容器 4. 注意事项5. 结语推荐阅读文章 在当今的云计…...

wormml_vgg19

创建环境 mamba install libopencv hdf5 -c conda-forge conda create -n st python3.6.2手动导入包 mamba install blas1.0mkl -c conda-forge mamba install hdf51.8.20hac2f561_1 -c conda-forge mamba install libopencv3.4.2h20b85fd_0 -c conda-forge mamba install l…...

Rust学习(二):rust基础语法Ⅰ

Rust学习&#xff08;二&#xff09;——rust基础语法Ⅰ&#xff1a; 1、关键字&#xff1a; 了解编程语言的同学都清楚&#xff0c;关键字在一门编程语言中的意义&#xff0c;所谓关键字就是语言的创造者及后续开发者们&#xff0c;以及定义好的具有特殊含义和作用的单词&am…...

【WebRTC】视频发送链路中类的简单分析(下)

目录 1.任务队列节流发送器&#xff08;TaskQueuePacedSender&#xff09;1.1 节流控制器添加RTP数据包&#xff08;PacingController::EnqueuePacket()&#xff09;1.2 监测是否要处理Packet&#xff08;PacingController::MaybeProcessPackets()&#xff09; 2.数据包路由&am…...

HTML(超文本标记语言)

HTML&#xff08;超文本标记语言 - HyperText Markup Language&#xff09;是一种用于创建网页的标准标记语言。 HTML 最初是由蒂姆・伯纳斯 - 李&#xff08;Tim Berners - Lee&#xff09;在 1990 年左右开发的。当时的目的是为了让世界各地的科学家能够方便地共享和交流信息…...

CatBoost中目标变量统计

CatBoost中的目标变量统计&#xff08;Target Statistics&#xff09;是其处理分类特征&#xff08;Categorical Features&#xff09;的核心技术之一。目标变量统计是一种特殊的编码方法&#xff0c;通过利用目标值信息生成数值特征&#xff0c;从而替代传统的独热编码或其他处…...

WSL与Ubuntu系统--使用Linux

WSL与Ubuntu系统--使用Linux 前言基础教学视频卸载链接网络配置方法1方法2 正式安装步骤步骤1 基本命令修改网络配置Ubuntu系统的导出与导入文件操作给Ubuntu创造界面--也就是在装一个有界面的UbuntuHyper-v与windows主机文件共享 前言 需要链接梯子&#xff0c;并且梯子十分稳…...

操作系统离散存储练习题

1. (简答题)分页存储管理系统具有快表&#xff0c;内存访问时间为2ns&#xff0c;检索快表时间为0.5ns&#xff0c;快表命中率为80%&#xff0c;求有效访问时间 -分析&#xff1a;首先访问缓存&#xff08;快表&#xff09;&#xff0c;如果没有找到访问内存&#xff08;页表&…...

性能高于Transformer模型1.7-2倍,彩云科技发布基于DCFormer架构通用大模型云锦天章

2017年&#xff0c;谷歌发布《Attention Is All You Need》论文&#xff0c;首次提出Transformer架构&#xff0c;掀开了人工智能自然语言处理&#xff08;NLP&#xff09;领域发展的全新篇章。Transformer架构作为神经网络学习中最重要的架构&#xff0c;成为后来席卷全球的一…...

PHP反序列化_3-漏洞利用

1. 信息收集与分析 确定目标应用程序&#xff1a;首先需要找到存在反序列化漏洞的 PHP 应用程序。这可能是一个网站、Web 服务、内部系统等。可以通过网络扫描、漏洞报告、安全评估等方式来发现潜在的目标。分析应用程序逻辑&#xff1a;了解目标应用程序的功能和业务逻辑&…...

2.初始sui move

vscode安装move插件 查看sui 客户端版本号 sui client --version 创建新项目 sui move new <项目名> sui move new hello_world 项目目录结构&#xff1a; hello_world ├── Move.toml ├── sources │ └── hello_world.move └── tests└── hello_world…...

数据结构--排序算法

目录 一.排序相关概念二.常见排序算法1.堆排序2.插入排序3.希尔排序4.选择排序5.冒泡排序6.快速排序1.快速排序--递归(未优化)2.快速排序--递归(优化)3.快速排序--非递归 7.归并排序1.归并排序--递归2.归并排序--非递归 一.排序相关概念 排序&#xff1a;使一串记录按照某个关…...

day60 图论章节刷题Part10(Floyd 算法、A * 算法)

Floyd 算法 思路&#xff1a;本题是多源最短路问题&#xff0c;使用Floyd算法求解。Floyd 算法对边的权值正负没有要求&#xff0c;核心思想是动态规划。 我们使用动规五部曲来理解和应用Floyd算法&#xff1a; 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义…...

UI架构解说

UI&#xff08;用户界面&#xff0c;User Interface&#xff09; 是指用户与软件或硬件系统进行交互的界面。 它是用户与系统之间的桥梁&#xff0c;允许用户通过视觉元素、交互组件和反馈机制来操作和控制应用程序或设备。 UI 设计的目标是提供直观、易用和愉悦的用户体验&a…...

战争鼓点响起:AI生成大片感战斗音乐作品

战争鼓点响起&#xff1a;AI生成大片感战斗音乐作品 1. 从文字到战歌&#xff1a;AI音乐生成初体验 想象一下这样的场景&#xff1a;你正在制作一部史诗级的战斗短片&#xff0c;画面中千军万马奔腾&#xff0c;刀光剑影交错&#xff0c;但总觉得缺少点什么。没错&#xff0c…...

FCOS3D vs PGD:单目3D检测两大算法核心差异与选型指南

FCOS3D与PGD&#xff1a;单目3D检测技术深度对比与工程实践指南 1. 技术背景与核心挑战 在自动驾驶和机器人感知领域&#xff0c;单目3D目标检测技术因其硬件成本优势和部署便捷性&#xff0c;正成为工业界关注的焦点。这项技术仅需单个摄像头即可实现对三维空间中物体的定位和…...

一步步教你获取ADNI影像数据:从搜索到下载全流程解析

1. ADNI数据库简介与准备工作 ADNI&#xff08;Alzheimers Disease Neuroimaging Initiative&#xff09;是全球最权威的阿尔茨海默病研究数据库之一&#xff0c;包含了大量脑部影像数据和临床信息。第一次接触这个数据库的研究者可能会被复杂的界面和操作流程吓到&#xff0c;…...

一键搞定完整网页截图:Chrome扩展终极指南

一键搞定完整网页截图&#xff1a;Chrome扩展终极指南 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension 你…...

车载Java OTA升级崩溃率从18.7%降至0.3%:基于Delta Patch + 类隔离热修复的4步标准化流程

第一章&#xff1a;车载Java OTA升级崩溃率从18.7%降至0.3%&#xff1a;基于Delta Patch 类隔离热修复的4步标准化流程在车载嵌入式Java环境&#xff08;JVM 11&#xff0c;ART兼容层&#xff09;中&#xff0c;OTA升级引发的ClassCastException与NoClassDefFoundError曾导致高…...

**发散创新:基于微应用架构的轻量级权限控制实战设计**在现代前端开

发散创新&#xff1a;基于微应用架构的轻量级权限控制实战设计 在现代前端开发中&#xff0c;**微应用&#xff08;Micro Frontend&#xff09;*8 已成为构建复杂单页应用&#xff08;SPA&#xff09;的标准方案之一。它允许团队独立开发、部署和维护各自的功能模块&#xff0c…...

SEO 页面优化平台如何分析竞争对手的优化情况

SEO 页面优化平台如何分析竞争对手的优化情况 在当前竞争激烈的互联网环境中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经成为每个网站的生存和发展的关键。而在这其中&#xff0c;SEO 页面优化平台的角色尤为重要。通过对竞争对手的优化情况进行深入分析&#x…...

Realistic Vision V5.1 提示词工程入门:C语言基础思维在Prompt编写中的应用

Realistic Vision V5.1 提示词工程入门&#xff1a;C语言基础思维在Prompt编写中的应用 如果你有C语言的编程经验&#xff0c;现在想玩转AI图像生成&#xff0c;特别是像Realistic Vision V5.1这样的写实风格模型&#xff0c;那这篇文章就是为你准备的。很多人觉得写提示词&am…...

VBA循环到底用For、Do While还是Do Until?看完这篇别再傻傻分不清

VBA循环结构深度解析&#xff1a;如何精准选择For、Do While与Do Until&#xff1f; 刚接触VBA时&#xff0c;看到各种循环结构总让人眼花缭乱——For循环、For Each、Do While、Do Until...它们看起来都能完成相似的任务&#xff0c;但实际编码中选错循环类型&#xff0c;轻则…...

一篇帮你搞定Arrays工具类!!!

一、引言最近在刷算法题的时候&#xff0c;用到了很多次Arrays的方法&#xff0c;因此&#xff0c;写一篇博客来整理一下相关用法二、介绍java.util.Arrays 是 Java 提供的数组操作工具类&#xff0c;包含了数组排序、查找、复制、比较、打印、填充等常用静态方法&#xff0c;无…...