| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Threepipe React/JSX Sample</title>
- <style>
- html, body{
- width: 100%;
- height: 100%;
- margin: 0;
- overflow: hidden;
- }
- </style>
-
- <script type="module" src="../examples-utils/global-loading.mjs"></script>
- <script type="module" src="../examples-utils/simple-code-preview.mjs"></script>
- <!-- Include Babel for JSX transformation -->
- <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
- </head>
- <body>
- <div id="root"></div>
- <script id="example-script" type="text/babel" data-scripts="./index.html" data-type="module">
- // import {ThreeViewer, LoadingScreenPlugin} from 'https://unpkg.com/threepipe@latest/dist/index.mjs'
- import {ThreeViewer, LoadingScreenPlugin, _testFinish, _testStart} from './../../dist/index.mjs'
- import React from 'https://esm.sh/react@18'
- import ReactDOM from 'https://esm.sh/react-dom@18'
-
- function ThreeViewerComponent({ src, env }) {
- const canvasRef = React.useRef(null);
- React.useEffect(() => {
- const viewer = new ThreeViewer({canvas: canvasRef.current,
- plugins: [LoadingScreenPlugin],
- })
-
- // Load an environment map
- const envPromise = viewer.setEnvironmentMap(env)
- const modelPromise = viewer.load(src, {
- autoCenter: true,
- autoScale: true,
- })
-
- Promise.all([envPromise, modelPromise]).then(([env, model])=>{
- console.log('Loaded', model, env, viewer)
- _testFinish()
- })
- return () => {
- viewer.dispose()
- }
- }, []);
- return (
- <canvas id="three-canvas" style={{ width: 800, height: 600 }} ref={canvasRef} />
- )
- }
-
- _testStart()
- ReactDOM.render(
- <ThreeViewerComponent
- src={'https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf'}
- env={'https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr'}
- />,
- document.getElementById('root')
- )
- </script>
- </body>
- </html>
|