如何在背景中加载新材质.map.image.src,然后进行渲染

How can I load new material.map.image.src in background and then render

本文关键字:然后 src image map 背景 新材质 加载      更新时间:2023-09-26

我试图在与鼠标交互时动态更改material.map.image.src,但每次设置新图像时,图像加载时场景都会抖动。为了显示最糟糕的问题,我将更改与onMouseMove事件联系起来。

下面是一个工作不稳定的例子:例子

我在onMouseMove事件中这样做,这可能是错误的方法,我的代码很粗糙,因为我试图学习javascript以使用三个.js:monkey see,monkey do style。

有人能帮我做相交[i].object.material.map.image.src="/images/maisy.jpg"吗在后台工作。。。?

function onMouseMove(e) {
        e.preventDefault();
        mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
        mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
        raycaster.setFromCamera(mouse, camera);
        var intersects = raycaster.intersectObjects(scene.children);
        for (var i = 0; i < intersects.length; i++) {
            intersects[i].object.material.map.image.src = "/images/maisy.jpg";
            exit; // ensures foreground object is adjusted and not all behind it.
        }
    }

这可能对你们所有人来说都是显而易见的,但我花了一些时间才走到这一步,现在我被难住了。

提前感谢所有阅读的人

James

在初始化代码的某个地方,您可以执行以下操作:

maisyTex = THREE.ImageUtils.loadTexture( "images/maisy.jpg" );

其中CCD_ 1是全局变量。然后在你的代码中,你只需要做:

intersects[i].object.material.map = maisyTex;