javascript - webgl Three.js - 如何显示 Sprite ?渲染错误 : Uncaught TypeError: Cannot read property 'x' of undefined at SpritePlugin.

标签 javascript three.js

我是 Three.js 的初学者。

我尝试了这里找到的代码:Creating-a-scene

然后我尝试使用此处找到的代码添加一个 Sprite : Sprite

但是我无法让它工作,因为我收到以下错误:

Uncaught TypeError: Cannot read property 'x' of undefined
    at SpritePlugin.render (three.js:6973)
    at WebGLRenderer.render (three.js:21007)
    at render (sprite.html:43)

html 文件就在那里: http://www.planetarium2016.com/sprite.html

我的错误在哪里?这是我的代码:

<html>
    <head>
        <title>My first three.js app</title>
        <style>
            body { margin: 0; }
            canvas { width: 100%; height: 100% }
        </style>
    </head>
    <body>
        <script src="https://rawgithub.com/mrdoob/three.js/master/build/three.js"></script>
        <script>
            var scene = new THREE.Scene();
            var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
            var renderer = new THREE.WebGLRenderer();
            renderer.setSize( window.innerWidth, window.innerHeight );
            document.body.appendChild( renderer.domElement );
            // instantiate a loader
            var loader = new THREE.TextureLoader();
            //allow cross origin loading
                //loader.crossOrigin = '';
            // load a resource
            loader.load("https://codefisher.org/static/images/pastel-svg/256/bullet-star.png");
            var spriteMaterial = new THREE.SpriteMaterial( { map: loader, color: 0xffffff } );
            var sprite = new THREE.Sprite( spriteMaterial );
            sprite.scale.set(200, 200, 1);
            scene.add( sprite );
            camera.position.z = 2;
            var render = function () {
                requestAnimationFrame( render );
                renderer.render(scene, camera);
            };
            render();
        </script>
    </body>
</html>

最佳答案

我想说下面的行可以修复该错误。

var spriteMap = loader.load("https://codefisher.org/static/images/pastel-svg/256/bullet-star.png");
var spriteMaterial = new THREE.SpriteMaterial( { map: spriteMap, color: 0xffffff } );

并且 requestAnimationFrame 是必要的。让我们保持 render 函数不变。

关于javascript - webgl Three.js - 如何显示 Sprite ?渲染错误 : Uncaught TypeError: Cannot read property 'x' of undefined at SpritePlugin.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009719/

相关文章:

javascript - Mongoose 多重表达错误?

javascript - 在 JS 中获取文档上的当前页面访问者

javascript - 在 HTML 上输出文本时不显示文本

javascript - 如何制作可点击的 CSS3DObject

javascript - three.js 灯没有在 chrome 上的 Apache 服务器下呈现

javascript - 如何在 Three.js 中仅渲染透明对象的最近深度级别?

javascript - 尝试让我的按钮在没有用户交互的情况下更改文本 javascript

javascript - 为 hover 的 mouseout 处理程序组合两个对象

three.js R71 - 移除环境,如何配置以获得相同的渲染结果?

Three.js 放置一个通过直线垂直的平面