Hello, I can’t get the same rendering on my three.js.
Can you help me ?
MY THREE.JS
OTHER 360
class scene
{
constructor(image) {
this.image = image
this.scene = null
this.sprites = []
this.controls = null
this.raycaster = new THREE.Raycaster();
}
createScene () {
this.scene = new THREE.Scene()
const texture = new THREE.TextureLoader().load('images/'+this.image);
texture.wrapS = THREE.RepeatWrapping;
texture.repeat.x = -1;
const sphere = new THREE.SphereGeometry(50, 32, 32);
const material = new THREE.MeshBasicMaterial(
{
map: texture,
side: THREE.BackSide,
} );
this.scene.add(new THREE.Mesh(sphere, material));
return this.scene;
}
addToolTip (array){
array.forEach(element => {
let map = new THREE.TextureLoader().load('images/button.png');
let materialSprite = new THREE.SpriteMaterial({ map: map });
let sprite = new THREE.Sprite(materialSprite);
sprite.name = element.name;
sprite.scale.multiplyScalar(2);
sprite.position.copy(element.position.clone().normalize().multiplyScalar(40));
this.scene.add(sprite);
this.sprites.push(sprite)
})
}
hoverToolTip (e, camera) {
let radiciinfo = document.querySelector('.radici')
let mouse = new THREE.Vector2(
(e.clientX / window.innerWidth) * 2 - 1,
- (e.clientY / window.innerHeight) * 2 + 1
)
this.raycaster.setFromCamera(mouse, camera);
let intersects = this.raycaster.intersectObjects(this.scene.children);
let foundSprite = false
let Tooltip = false
intersects.forEach(element => {
if (element.object.type === "Sprite") {
let p = element.object.position.clone().project(camera);
radiciinfo.style.top = ((-1 * p.y +1) * window.innerHeight / 2) + 'px';
radiciinfo.style.right = ((-1 * p.x +1) * window.innerWidth / 2) + 'px';
foundSprite = true;
Tooltip = true;
}
});
if (foundSprite, Tooltip) {
radiciinfo.classList.add("isActive");
} else {
radiciinfo.classList.remove("isActive");
}
}
clickToolType (e, camera) {
let mouse = new THREE.Vector2(
(e.clientX / window.innerWidth) * 2 - 1,
- (e.clientY / window.innerHeight) * 2 + 1
)
this.raycaster.setFromCamera(mouse, camera);
let intersects = this.raycaster.intersectObjects(this.scene.children);
intersects.forEach(element => {
if (element.object.type === "Sprite") {
}
});
}
}
let scene1 = new scene('test.jpg')
let sceneef = scene1.createScene()
scene1.addToolTip(
[{
position: new THREE.Vector3(-8.301313896931159,-3.746863768203316,48.998320776189075),
name: 'radici'
}]
)
let camera = new THREE.PerspectiveCamera(71, window.innerWidth / window.innerHeight, 0.1, 1000 )
camera.position.set(0.1, 0, 0);
const renderer = new THREE.WebGLRenderer({
antialias: true,
});
renderer.setSize( window.innerWidth, window.innerHeight );
const container = document.body.appendChild(renderer.domElement);
renderer.setPixelRatio(window.devicePixelRatio);
function resize() {
renderer.setSize(window.innerWidth, window.innerHeight);
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
}
let controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.rotateSpeed = 0.4;
controls.enableZoom = false;
controls.update();
function animate() {
requestAnimationFrame(animate);
renderer.render(sceneef, camera);
};
animate();
window.addEventListener("resize", resize);
container.addEventListener("mousemove", (e) => scene1.hoverToolTip(e, camera));
container.addEventListener("click", (e) => scene1.clickToolType(e, camera));