【问题标题】:three.js: Image in panorama viewer is rippledthree.js:全景查看器中的图像有波纹
【发布时间】:2018-11-02 06:43:46
【问题描述】:

目前我正在熟悉 three.js 并创建了一个简单的全景图查看器: http://webentwicklung.ulrichbangert.de/threejs-image-on-sphere-inside.html 不幸的是,柱子的垂直边缘有波纹。 使用全景工作室的全景查看器时,一切都很好: http://ulrichbangert.de/heimat/Halberstadt/2018-06-10_Halberstadt_Dom_Panorama.html

    var width = window.innerWidth,
        height = window.innerHeight;

    var scene = new THREE.Scene();
    scene.add(new THREE.AmbientLight(0x333333));
    var light = new THREE.DirectionalLight(0xffffff, 1);
    light.position.set(5, 3, 5);
    scene.add(light);

    var camera = new THREE.PerspectiveCamera(45, width / height, 0.01, 1000);
    camera.position.z = 1;
    camera.fov = Math.max(100, Math.min(200, camera.fov));
    camera.updateProjectionMatrix();

    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(width, height);
    document.body.appendChild(renderer.domElement);

    var loader = new THREE.TextureLoader();
    loader.load('images/panorama.jpg', function (texture) {
        texture.anisotropy = renderer.getMaxAnisotropy();
        var material = new THREE.MeshBasicMaterial({
            map: texture
        });
        var sphere = new THREE.Mesh(
            new THREE.SphereGeometry(20, 32, 32),
            material
        );
        sphere.scale.x = -1;
        sphere.rotation.x = -0.5;
        scene.add(sphere);
        var animate = function () {
            requestAnimationFrame(animate);
            sphere.rotation.y += 0.002;
            renderer.render(scene, camera);
        };
        animate();
    });

这里出了什么问题?

【问题讨论】:

    标签: three.js panoramas


    【解决方案1】:

    尝试向您的SphereGeometry 添加更多细分。现在您有 32 个纬度和经度细分,这会对您的纹理产生一些难看的直线变形。如果您执行new THREE.SphereGeometry(20, 100, 100) 之类的操作,您将在纹理映射时获得更好的保真度。

    【讨论】:

    • 太好了,这完成了工作,现在边缘是直的!非常感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多