Newer
Older
2024-Tsubasa / paper / paper-2024nendo / video_audio.txt
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
}