function makeVideo(objName, videoPath, audioPath) { const video = document.createElement("video"); document.body.appendChild(video); video.style.display = "none"; video.src = videoPath; video.autoplay = false; video.preload = "auto"; video.loop = true; video.muted = true; video.id = objName; const videoTexture = new THREE.VideoTexture(video); videoTexture.minFilter = THREE.LinearFilter; videoTexture.magFilter = THREE.LinearFilter; videoTexture.wrapS = THREE.ClampToEdgeWrapping; videoTexture.wrapT = THREE.ClampToEdgeWrapping; const videoGeometry = new THREE.PlaneGeometry(3, 2); const videoMaterial = new THREE.MeshBasicMaterial({ map: videoTexture, color: 0xffffff }); const videoMesh = new THREE.Mesh(videoGeometry, videoMaterial); videoMesh.position.set(-0.875, 0, 0); videoMesh.name = objName; scene.add(videoMesh); const audioListener = new THREE.AudioListener(); camera.add(audioListener); const audioLoader = new THREE.AudioLoader(); const positionalAudio = new THREE.PositionalAudio(audioListener); audioLoader.load(audioPath, function (buffer) { positionalAudio.setBuffer(buffer); positionalAudio.setRefDistance(100); positionalAudio.pause(); positionalAudio.name = objName; }); videoMesh.add(positionalAudio); return videoMesh }