Loading...
Loading...
Integrates a local Cognite Reveal 3D CAD viewer bundle into Flows apps by copying app-local source code. Use when adding 3D viewer, 3D visualization, Reveal, CAD model, RevealProvider, RevealCanvas, Reveal3DResources, FDM 3D mapping, asset 3D model, model browser, or Cognite 3D content to a Flows application.
npx skill4agent add cognitedata/builder-skills reveal-3d@cognite/duneQueryClientProvider@tanstack/react-queryCogniteVisualizable.object3DCogniteCADNodepackage.jsonvite.config.tssrc/main.tsxskills/reveal-3d/code/reveal/src/features/reveal-3d/@/*import { CacheProvider, RevealKeepAlive, RevealProvider } from '@/features/reveal-3d';main.tsxprocessutilassertthreeworker.format: 'es'DMInstanceRefCacheProviderRevealKeepAliveRevealProvidertsc --noEmitpnpm buildimport { useCallback, useMemo } from 'react';
import type { CogniteClient } from '@cognite/sdk';
import {
CacheProvider,
Reveal3DResources,
RevealCanvas,
RevealKeepAlive,
RevealProvider,
type AddCadResourceOptions,
} from '@/features/reveal-3d';
type SelectedModel = { modelId: number; revisionId: number };
function ViewerContent({ modelId, revisionId }: SelectedModel) {
const resources = useMemo<AddCadResourceOptions[]>(
() => [{ modelId, revisionId }],
[modelId, revisionId]
);
const onLoaded = useCallback(() => {}, []);
return (
<RevealCanvas>
<Reveal3DResources resources={resources} onModelsLoaded={onLoaded} />
</RevealCanvas>
);
}
export function ViewerPage({
sdk,
selected,
}: {
sdk: CogniteClient;
selected: SelectedModel | null;
}) {
const memoizedSdk = useMemo(() => sdk, [sdk.project]);
return (
<CacheProvider>
<RevealKeepAlive>
<div style={{ width: '100%', height: '70vh', position: 'relative' }}>
{selected && (
<RevealProvider sdk={memoizedSdk}>
<ViewerContent
modelId={selected.modelId}
revisionId={selected.revisionId}
/>
</RevealProvider>
)}
</div>
</RevealKeepAlive>
</CacheProvider>
);
}| Package | Suggested version | Purpose |
|---|---|---|
| app version | UI framework |
| app version | Authenticated SDK via |
| | Reveal viewer runtime |
| | CDF API client |
| | Reveal/FDM data fetching hooks |
| | Three.js singleton used by Reveal |
| latest | Browser polyfills for Reveal dependencies |
| | Avoids older transitive AJV resolution in monorepos |
| latest dev dep | TypeScript types |
pnpm add @cognite/reveal @cognite/sdk @tanstack/react-query three process util assert ajv
pnpm add -D @types/three@cognite/revealthreethreevite-plugin-node-polyfillsViewerContentRevealCanvasReveal3DResourcesresourcesReveal3DResourcesuseMemoonModelsLoadedonSelectuseCallbackRevealProvideruseMemoclient.projectRevealCanvasReact.lazySuspensecode/README.mdreferences/implementation.mdreferences/vite-config.mdskills/reveal-3d/code/reveal/@/features/reveal-3dpackage.jsonmain.tsxprocessvite.config.tsthreeworker.format: 'es'CacheProviderRevealKeepAliveRevealProvider