react-three-start
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesereact-three-start
react-three-start
@react-three/startsrc/@react-three/startsrc/Project Shape
项目结构
txt
src/
cube.scene.tsx # rendered inside <Canvas>
lights.scene.tsx # rendered inside <Canvas>
hud.dom.tsx # rendered in the DOM overlay
start.config.ts # optional framework configUse , , and ; is the short alias. Create apps with .
react-three-start devreact-three-start buildreact-three-start previewr3snpx @react-three/start create my-apptxt
src/
cube.scene.tsx # 在<Canvas>内渲染
lights.scene.tsx # 在<Canvas>内渲染
hud.dom.tsx # 在DOM覆盖层中渲染
start.config.ts # 可选的框架配置文件使用、和命令;是其简写别名。可通过创建应用。
react-three-start devreact-three-start buildreact-three-start previewr3snpx @react-three/start create my-appEntry Files
入口文件
- files are the 3D layer. Default-export R3F objects, lights, cameras, controls, physics bodies, or providers.
src/**/*.scene.tsx - files are the DOM overlay layer. Default-export normal React DOM UI.
src/**/*.dom.tsx - Entries are discovered automatically and sorted by path. Do not create a manual scene registry for ordinary app composition.
- DOM overlay content is fixed over the viewport. With the default injected Canvas, the overlay container has , so interactive DOM controls should set
pointer-events: none.pointerEvents: 'auto'
- 文件属于3D层。默认导出R3F对象、光源、相机、控制器、物理体或提供者。
src/**/*.scene.tsx - 文件属于DOM覆盖层。默认导出普通React DOM UI。
src/**/*.dom.tsx - 入口文件会被自动发现并按路径排序。普通应用组合无需手动创建场景注册表。
- DOM覆盖层内容固定在视口上方。在默认注入的Canvas中,覆盖层容器设置了,因此交互式DOM控件需手动设置
pointer-events: none。pointerEvents: 'auto'
Slots And Wrappers
插槽与包装器
Import or from only inside discovered and entry files. The Vite plugin rewrites those imports to continuation components.
SceneDom@react-three/start*.scene.tsx*.dom.tsxA scene file that imports and renders becomes a scene wrapper. Use wrappers for providers that must surround the rest of the 3D scene: XR, physics, Suspense, controls, environment setup. Sorted filenames define nesting order.
<Scene />tsx
// src/00-xr.scene.tsx
import { Scene } from '@react-three/start'
import { Physics } from '@react-three/rapier'
export default function PhysicsWrapper() {
return (
<Physics>
<Scene />
</Physics>
)
}txt
00-xr.scene.tsx # outer wrapper
10-physics.scene.tsx # inner wrapper
cube.scene.tsx # leaf scene entryA DOM file that imports and renders becomes a DOM wrapper. A DOM file may also import when manually owning the Canvas.
<Dom /><Scene />仅在已被发现的和入口文件中从导入或。Vite插件会将这些导入重写为延续组件。
*.scene.tsx*.dom.tsx@react-three/startSceneDom导入并渲染的场景文件将成为场景包装器。包装器适用于必须包裹其余3D场景的提供者:XR、物理、Suspense、控制器、环境设置。文件名的数字前缀定义了嵌套顺序。
<Scene />tsx
// src/00-xr.scene.tsx
import { Scene } from '@react-three/start'
import { Physics } from '@react-three/rapier'
export default function PhysicsWrapper() {
return (
<Physics>
<Scene />
</Physics>
)
}txt
00-xr.scene.tsx # 外层包装器
10-physics.scene.tsx # 内层包装器
cube.scene.tsx # 叶子场景入口导入并渲染的DOM文件将成为DOM包装器。DOM文件也可在手动管理Canvas时导入。
<Dom /><Scene />Manual Canvas
手动配置Canvas
By default, react-three-start injects a fullscreen Canvas and renders inside it. When layout, shadows, camera props, XR buttons, or multiple panels need ownership, disable injection and render the Canvas from a DOM entry.
<Scene />ts
// start.config.ts
export default {
injectCanvas: false,
title: 'My R3F app'
}tsx
// src/app.dom.tsx
import { Canvas } from '@react-three/fiber'
import { Scene } from '@react-three/start'
export default function App() {
return (
<Canvas shadows camera={{ position: [0, 2, 6], fov: 45 }}>
<Scene />
</Canvas>
)
}start.config.tsinjectCanvastitlevitevitereactThreeStart()start.config.tsvite.config.ts默认情况下,react-three-start会注入一个全屏Canvas并在其中渲染。当需要自定义布局、阴影、相机属性、XR按钮或多面板时,可禁用自动注入并从DOM入口渲染Canvas。
<Scene />ts
// start.config.ts
export default {
injectCanvas: false,
title: 'My R3F app'
}tsx
// src/app.dom.tsx
import { Canvas } from '@react-three/fiber'
import { Scene } from '@react-three/start'
export default function App() {
return (
<Canvas shadows camera={{ position: [0, 2, 6], fov: 45 }}>
<Scene />
</Canvas>
)
}start.config.tsinjectCanvastitlevitevitereactThreeStart()start.config.tsvite.config.tsAgent Rules Of Thumb
Agent使用经验法则
- Add new visual content as small leaves unless it must wrap other scene entries.
*.scene.tsx - Add UI as ; keep interactive overlay elements explicitly pointer-enabled.
*.dom.tsx - Use numeric filename prefixes for wrapper order, not import order.
- Keep and
Sceneimports in entry files only; pass ordinary React components through normal imports.Dom - Reach for manual Canvas only when the default fullscreen Canvas is too limiting.
- 除非必须包裹其他场景入口,否则将新视觉内容添加为小型叶子文件。
*.scene.tsx - 将UI添加为文件;确保交互式覆盖元素显式启用指针事件。
*.dom.tsx - 使用文件名的数字前缀定义包装器顺序,而非导入顺序。
- 仅在入口文件中保留和
Scene导入;普通React组件通过常规导入传递。Dom - 仅当默认全屏Canvas无法满足需求时,才考虑手动配置Canvas。