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.