Я хочу создать сцену неба в средстве просмотра кузницы, я узнаю, как -three-js">Как вы можете добавить текст в Forge Viewer с помощью three.js?Поэтому я использую threejs-full-es6 для импорта неба, а затем новое небо, но когда я добавляю объект неба в сцену. Он сообщает об ошибках: (THREE.Object3D.add: объект не является экземпляром THREE.Object3D). Я нашел новое небо таким образом, что объект отличается от commen three.js. При импорте неба из threejs-full-es6 объект представляет собой только сообщение сетки. .png" rel="nofollow noreferrer"> three.js:
import { Sky,SphereBufferGeometry} from './Three.es.min';
initSky() {
var sky, sunSphere;
var scene = viewer.impl.scene;
sky = new Sky();
scene.add( sky );
// Add Sun Helper
sunSphere = new THREE.Mesh(
new SphereBufferGeometry( 20000, 16, 8 ),
new THREE.MeshBasicMaterial( { color: 0xffffff } )
);
sunSphere.position.y = - 700000;
sunSphere.visible = false;
scene.add( sunSphere );
/// GUI
var effectController = {
turbidity: 10,
rayleigh: 2,
mieCoefficient: 0.005,
mieDirectionalG: 0.8,
luminance: 1,
inclination: 0.49, // elevation / inclination
azimuth: 0.25, // Facing front,
sun: ! true
};
var distance = 400000;
function guiChanged() {
var uniforms = sky.uniforms;
uniforms.turbidity.value = effectController.turbidity;
uniforms.rayleigh.value = effectController.rayleigh;
uniforms.luminance.value = effectController.luminance;
uniforms.mieCoefficient.value = effectController.mieCoefficient;
uniforms.mieDirectionalG.value = effectController.mieDirectionalG;
var theta = Math.PI * ( effectController.inclination - 0.5 );
var phi = 2 * Math.PI * ( effectController.azimuth - 0.5 );
sunSphere.position.x = distance * Math.cos( phi );
sunSphere.position.y = distance * Math.sin( phi ) * Math.sin( theta );
sunSphere.position.z = distance * Math.sin( phi ) * Math.cos( theta );
sunSphere.visible = effectController.sun;
sky.uniforms.sunPosition.value.copy( sunSphere.position );
renderer.render( scene, camera );
}
guiChanged();
}