#reactjs #three.js #react-three-fiber
Вопрос:
Я пытаюсь создать изображение 360 с помощью react-three-fiber. Просмотрщик 360 работает идеально, как и предполагалось, но созданное изображение темнее, чем исходное.
Вот скриншот из моего средства просмотра 360
Вот мой код
import React, { Suspense } from "react";
import { useTexture, OrbitControls } from "@react-three/drei";
import { Canvas } from "@react-three/fiber";
import * as THREE from "three";
const Generate360Image = (props) => {
var myTexture = useTexture(props.imageLocation);
return (
<>
<mesh
position={[0, 0, 0]}
>
<sphereGeometry attach="geometry" args={[500, 60, 60]} />
<meshBasicMaterial
attach="material"
map={myTexture}
side={THREE.DoubleSide}
/>
</mesh>
</>
);
};
class GenerateImage extends React.Component {
render() {
return (
<Canvas style={{ width: "100%", height: "100%" }}>
<Suspense fallback={null}>
<Generate360Image
imageLocation={this.props.myImage}
className="image-canvas"
/>
</Suspense>
<OrbitControls
autoRotate="true"
autoRotateSpeed={0.4}
minDistance={5}
maxDistance={80}
/>
</Canvas>
);
}
}
export default GenerateImage;
Любая помощь будет оценена по достоинству. Спасибо!
Ответ №1:
попробуйте использовать meshPhysicalMaterial
вместо meshBasicMaterial
. meshBasicMaterial
не отражает должным образом освещение.
сравните эти два образца из three.js документы