3dsvg

中文文档
0.2.1发布于 2026/04/09MITTypeScriptES Module近 30 天下载 2985

将 SVG 转换为交互式 React 3D 组件的最简单方式

中文使用文档
文档目录17 节
  1. 安装
  2. 快速启动
  3. 演示词编辑器( E)
  4. 道具
  5. 内容
  6. 形状
  7. 材料
  8. 纹理
  9. 照明
  10. 相机
  11. 互动
  12. 动画
  13. 介绍
  14. 版式
  15. 活动
  16. 可用字体
  17. 许可证

3个dsvg

3dsvg

将 SVG 转换成交互式 React 3D 组件的最简单方法.

License: MIT npm npm bundle size

安装

npm install 3dsvg

同伴依赖性 : react, (中文(简体) ), react-dom, (中文(简体) ), three, (中文(简体) ), @react-three/fiber, (中文(简体) ), @react-three/drei

快速启动

import { SVG3D } from "3dsvg";

// 3D text
<SVG3D text="Hello" animate="spin" />

// SVG from your public folder
<SVG3D svg="/logo.svg" material="gold" animate="float" />

// Inline SVG markup
<SVG3D svg='<svg viewBox="0 0 24 24"><path d="M12 2L2 7l10 5 10-5z"/></svg>' />

// Remote URL
<SVG3D svg="https://cdn.example.com/icon.svg" material="metal" />

下一个.js - 与 next/dynamic 安保部门安全:

const SVG3D = dynamic(
  () => import("3dsvg").then((m) => ({ default: m.SVG3D })),
  { ssr: false }
);

演示词编辑器( E)

设计 三维对象可视化并导出嵌入式代码 3dsvg 设计。 。 。 .

道具

内容

提供其中之一 text 或者说 svg如果两者都给予, svg 优先处理.

Prop类型默认说明
textstring—— 说要以 三维格式翻译的文本
fontstring"DM Sans"谷歌字体名称( 见 可用字体(中文(简体) )
svgstring—— 说SVG 标记或 URL (/logo.svg, (中文(简体) ), https://..., (中文(简体) ), ./path.svg(中文(简体) )

形状

Prop类型默认说明
depthnumber1(0.5=平地;10=非常深地)
smoothnessnumber0.2曲线和贝壳质量, 0-1
colorstring"#ffffff"底色( 小时)

材料

Prop类型默认说明
materialMaterialPreset"default"材料预设(见下文)
metalnessnumber—— 说覆盖预设的金属( 0-1)
roughnessnumber—— 说覆盖预设粗糙度 (0-1)
opacitynumber—— 说覆盖预设不透明( 0– 1)
wireframebooleanfalse线框渲染模式

材料预设 :

预设金属粗糙度页:1
default0.15 (中文(简体) )0.35 (简体中文)平衡起点
plastic0.0 数据0.3 (韩语)平滑、非反射
metal0.9 (中文(简体) )0.2 (韩语)破碎的金属
glass0.1 数据0.05 (简体中文)有折射的透明
rubber0.0 数据0.9 (中文(简体) )马特,软
chrome1.0 国家0.05 (简体中文)镜像倒影
gold1.0 国家0.25 (中文(简体) )自动应用金锡
clay0.0 数据1.0 国家满分
emissive0.0 数据0.5 (韩语)自发发光
holographic0.8 (简体中文)0.1 数据透明而有清衣

纹理

Prop类型默认说明
texturestring—— 说映射到 三维表面的图像 URL
textureRepeatnumber1纹理瓦片数倍
textureRotationnumber0弧度纹理旋转
textureOffset[number, number][0, 0]页:1 [x, y]

当纹理被设定时,基色被上覆为白色,因此纹理在完全忠贞时会得到.

照明

Prop类型默认说明
lightPosition[number, number, number][5, 8, 5]关键光位置 [x, y, z]
lightIntensitynumber1.2关键亮度
ambientIntensitynumber0.3环境填充光
shadowbooleantrue显示联系人阴影

相机

Prop类型默认说明
rotationXnumber0初始 X 旋转(弧度)
rotationYnumber0初始 Y 旋转(弧度)
zoomnumber8相机距离
fovnumber50视野(度)

相机在窄/相相上自动调整——它按比例放大,使3D对象总是适合可见区域.

互动

Prop类型默认说明
interactivebooleantrue师傅切换.. false 禁用拖放、缩放和轨道
cursorOrbitbooleantrue对象潜入光标
orbitStrengthnumber0.15对象跟随光标的强度(弧度)
draggablebooleantrue允许拖动旋转
scrollZoombooleanfalse允许卷轴缩放( 默认情况下关闭, 这样嵌入不会劫持页面卷轴)
resetOnIdlebooleanfalse不活动后返回默认位置
resetDelaynumber2重置触发前秒数

动画

Prop类型默认说明
animateAnimationType"none"循环动画类型(见下文)
animateSpeednumber1速度乘数
animateReversebooleanfalse倒转方向

动画类型 : none • 妇女 spin • 妇女 float • 妇女 pulse • 妇女 wobble • 妇女 spinFloat • 妇女 swing

介绍

Prop类型默认说明
introstring"zoom"内置动画 : zoom • 妇女 fade • 妇女 none
introDurationnumber2.5持续时间( 秒)
introFromobject{ zoom: 18, opacity: 0 }开始状态
introToobject{ zoom: 8, opacity: 1 }结束状态

版式

Prop类型默认说明
widthstring | number"100%"容器宽度
heightstring | number"100%"集装箱高度
backgroundstring"transparent"帆布背景颜色
classNamestring—— 说包装器上的 CSS 课

活动

Prop类型说明
onReady() => void当WebGL 上下文准备就绪, 第一个帧被打开时开火
onAnimationComplete() => void动画完成后会起火
onLoadingChange(loading: boolean, progress: number) => void在几何处理过程中随加载状态和进度而起火 (0-100). 用它来显示自定义加载 UI .

几何处理是同步的——复杂的SVG分批处理,以保持浏览器的响应性. 这个 onLoadingChange 回调让您跟踪进度并显示加载指标 :

<SVG3D
  svgString={complexSvg}
  onLoadingChange={(loading, progress) => {
    if (loading) console.log(`Processing: ${progress}%`);
    else console.log("Done");
  }}
/>

可用字体

DM Sans · Bebas Neue · 游戏展会 · 正确 · 黑色操作 1 · 永久标记 · Rubik Mono One · Pacifico · Oswald · Archivo Black

许可证

麻省理工学院 - 雷纳托·科斯塔

赚到的 蓝莓 🫐

版本与发布记录

3dsvg 共发布 5 个版本,首次发布于 2026/04/03;过去 12 个月发布了 5 个版本。

版本发布日期距今
0.2.1latest2026/04/096 个月前
0.2.02026/04/096 个月前
0.1.22026/04/037 个月前
0.1.12026/04/037 个月前
0.1.02026/04/037 个月前

关于 3dsvg 的常见问题

3dsvg 是什么?

将 SVG 转换为交互式 React 3D 组件的最简单方式

如何安装 3dsvg?

在项目目录运行 npm install 3dsvg,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18)、react-dom(>=18)、three(>=0.160.0)、@react-three/fiber(>=9)、@react-three/drei(>=10)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

3dsvg 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

3dsvg 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

3dsvg 可以商用吗?

3dsvg 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

3dsvg 的下载量有多少?

根据 npm 官方下载统计,3dsvg 在 2026/10/04 – 2026/11/02 这 30 天内被下载 2,985 次,日均约 100 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

3dsvg 还在维护吗?

最新版本 0.2.1 发布于 2026/04/09(6 个月前);至今共发布 5 个版本,其中过去 12 个月发布了 5 个;首次发布于 2026/04/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。