THREE.SpriteCanvasMaterial не работает

Этот код (на основе этого кода):

drawCircle = (context) -> pos = 0.5 radius = 0.5 context.scale(0.05, -0.05) context.beginPath() context.arc(pos, pos, radius, 0, 2*Math.PI, false) context.fillStyle = 'white' context.fill() m = new THREE.SpriteCanvasMaterial( {program: drawCircle } ) s = new THREE.Sprite( m )

возвращает ошибку

Uncaught TypeError: Cannot read property 'x' of undefined.

В Three.js: строка 36534:

_gl.uniform2f( uniforms.uvScale, material.uvScale.x, material.uvScale.y );

Кажется, что свойства uvScale и uvOffset не были правильно инициализированы... Почему? Если я сам установил эти свойства:

m.uvScale = new THREE.Vector2() m.uvOffset = new THREE.Vector2()

Ошибки исчезают, но я не вижу частиц (я не знаю, где рисовать на холсте, и почему я должен его масштабировать).

1 ответ

Вы используете материал, который предназначен для canvas2D в webglrenderer. Вы должны либо использовать canvasrenderer, либо использовать другой материал (SpriteMaterial).

licensed under cc by-sa 3.0 with attribution.