A-Frame React Immersive Stereoscopic Video Component
Languages
Introduce
This library is for using mirror in [email protected].
Get from Three.js build-in Refractor, and reference from Reflector example.
Install
Require to install @belivvr/aframe-react.
# yarn
yarn add [email protected] @belivvr/aframe-react @belivvr/aframe-react-mirror
# npm
npm i [email protected] @belivvr/aframe-react @belivvr/aframe-react-mirror
Usage
React
import 'aframe';
import { Scene, Plain } from '@belivvr/aframe-react';
import {
registerMirror,
Mirror,
} from '@belivvr/aframe-react-mirror';
registerMirror(); // Doing AFRAME.registerComponent in mirror function.
ReactDOM.render(
(
<Scene>
<Mirror
width={5}
height={10}
position={{ x: 0, y: 0, z: 20 }}
/>
// if you want to mirror what is has side of back
// using below Mirror component
<Mirror
width={5}
height={10}
position={{ x: 0, y: 0, z: 19.999 }}
rotation={{ x: 0, y: 180, z: 0 }}
/>
</Scene>
),
document.getElementById('root'),
);
Next.JS
Can’t using import AFRAME from 'aframe'; in Next.JS.
Inevitably, we have no choice but to use require, and we have to check the completion of ssr through useEffect and then rendering.
Since aframe uses the window object, check the window object through typeof window !== 'undefined' and call aframe.
import type { NextPage } from 'next';
import React, { useEffect, useState } from 'react';
import { Scene, Plain } from '@belivvr/aframe-react';
import {
registerMirror,
Mirror,
} from '@belivvr/aframe-react-mirror';
const Home: NextPage = () => {
const [rendered, setRendered] = useState<boolean>(false);
useEffect(() => {
setRendered(true);
if (typeof window !== 'undefined') {
require('aframe'); // eslint-disable-line global-require
registerMirror(); // Doing AFRAME.registerComponent in stereoscopic function.
}
}, [mirror, setRendered]);
if (!rendered) {
return <>loading</>;
}
return (
<Scene>
<Mirror
width={5}
height={10}
position={{ x: 0, y: 0, z: 20 }}
/>
// if you want to mirror what is has side of back
// using below Mirror component
<Mirror
width={5}
height={10}
position={{ x: 0, y: 0, z: 19.999 }}
rotation={{ x: 0, y: 180, z: 0 }}
/>
</Scene>
);
};
export default Home;
Options
| name | description | default |
|---|---|---|
| width | mirror width | 5 |
| height | mirror height | 20 |
| position | mirror position | { x: 0, y: 0, z: 20 } |