threejs在mouseover上修改envMap

时间:2012-10-30 11:10:17

标签: three.js material

我是threejs的新手,我想了解一下这个库...但是,在我看来,文档很少。

问题是:

我有一个SphereGeometry,我希望通过鼠标事件给它一些交互性,我使用三个.domevent.object3d.js进行“mouseover”和“mouseout”事件,以使scale属性更大或更小。但是,当触发鼠标悬停时我无法修改球体材质,因为没有任何反应。我的代码是:

    sphere.on('mouseover', function(event){
        event.target.scale.x *= 2;
        event.target.scale.y *= 2;
        event.target.scale.z *= 2;
        event.target.material.envMap = textureCube;
        event.target.material.combine = THREE.MixOperation;
        event.target.material.reflectivity = 0.15;
    }).on('mouseout', function(event){
        event.target.scale.x *= 0.5;
        event.target.scale.y *= 0.5;
        event.target.scale.z *= 0.5;
        event.target.material.envMap = null;
        event.target.material.combine = THREE.MixOperation;
        event.target.material.reflectivity = 0;
    });

textureCube是一组用于skyboxMesh的jpeg,其代码为:

var r = "images/";
var urls = [ r + "px.jpg", r + "nx.jpg",
             r + "py.jpg", r + "ny.jpg",
             r + "pz.jpg", r + "nz.jpg" ];

textureCube = THREE.ImageUtils.loadTextureCube( urls );

任何帮助将不胜感激

由于

1 个答案:

答案 0 :(得分:2)

如果要从材料添加或删除环境贴图,则必须添加

material.needsUpdate = true;

查看“如何更新内容”文档:https://threejs.org/docs/index.html#manual/en/introduction/How-to-update-things

three.domevent.object3d.js不属于图书馆,因此我无法对此发表评论。

three.js r.52