μΌ! pixi.js λ΄μμ three.js μ₯λ©΄μ λ λλ§νμ¬ ν μ²λ¦¬ λ°©μμΌλ‘ μΌλΆ νν°λ₯Ό μ μ©νλ €κ³ ν©λλ€. λ ν¨μ¨μ μΌλ‘ μννλ λ°©λ²μ 무μμ λκΉ?
μμ μμ κ° μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ λ΄κ°νλ μΌμ΄ μμ΅λλ€. μ€ν μ€ν¬λ¦° μΊλ²μ€μμ three.jsλ₯Ό μ΄κΈ°ν ν λ€μ λ€μμ μνν©λλ€.
const threeTexture = PIXI.Texture.from(threeApp.renderer.domElement)
const threeSprite = new PIXI.Sprite(threeTexture)
// divide by pixelratio to make it the correct size, on retinas it's 2
threeSprite.scale.x /= window.devicePixelRatio
threeSprite.scale.y /= window.devicePixelRatio
pixiApp.stage.addChild(threeSprite)
κ·Έλ° λ€μ λ λλ§ λ£¨νμμ
threeApp.draw()
threeSprite.texture.update() // tell pixi that threejs has changed
pixiApp.render()
λ΄κ° λμΉ λ€λ₯Έ κ²μ΄ μμ΅λκΉ? λ μ’μ μ΅μ ν?
μ΄μ¨λ μ€μ λ¬Έμ λ νλ©΄ ν¬κΈ°λ₯Ό μ‘°μ ν λμ΄ μ½λκ° three.jsμμ μ€νλλ€λ κ²μ λλ€.
renderer.setSize(window.innerWidth, window.innerHeight)
κΈ°λ³Έμ μΌλ‘ three.jsμ λ λλ§ λ μμμ ν¬κΈ°λ₯Ό λ³κ²½νκ³ λ¬Όλ‘ pixi.jsκ° μ€λ¨λ©λλ€.
ν μ€μ² ν¬κΈ°λ₯Ό μ λ°μ΄νΈνλλ‘ pixi.jsμ μ΄λ»κ² μ§μν©λκΉ?
pixi.js
λ²μ : 5.0.0-rcthree.js
λ²μ : 0.101.1κ°λ₯νλ©΄ threejs μμ κ° v4 μ© Issuesμ μ¬λ¬ λ² κ²μλμμ§λ§ μμ§ v5 μ©μΌλ‘ λ§λ€μ§ μμμ΅λλ€.
κΈ°λ³Έμ μΌλ‘ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ³κ²½ν λλ§λ€ pixi λ° threejs μνλ₯Ό λͺ¨λ μ¬μ€μ ν΄μΌν©λλ€.
μ§κΈμ μ€λλ λ°λͺ¨λ₯Ό μ 곡 ν μ μμ§λ§ μ¬κΈ°μ http://www.html5gamedevs.com/forum/15-pixijs/ μμ κ²μ ν μ μμ΅λλ€. ν μ€μ² 곡μ λ μ΄λκ°μμ λ Όμλμμ΅λλ€.
λΉμ μ΄ν΄μΌ ν μΌμ κ²μνκ³ v5λ‘ μ΄μνλ κ²μ λλ€. νμ΄μ λΉλλ€! μ΄λκ°μμ μ€ν¨νλ©΄ λ κ°μ§ λͺ¨λλ₯Ό λμΈ μ μμ΅λλ€.
2Dμ 3D μ€λΈμ νΈκ° μλ‘ λΆλ₯λλ λ°λͺ¨λ λ§λ€μμ§ λ§ κ³΅κ°μ μΌλ‘ 곡μ νμ§ μμμ΅λλ€.
μ΄κ²μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν©λκΉ? https://github.com/pixijs/pixi.js/pull/5430 μμ μ μ΄λ―Έ 5.0.0-rc2μ μμ΅λλ€.
@ivanpopelyshev μλ΅μ κ°μ¬λ립λλ€! μ΄ ν λ‘ κ³Όμ΄ μ½λ μ€ λν«μ λ μ ννκ² μΈκΈνκ³ μλ€κ³ μκ°ν©λλ€.
gl.disable(gl.DEPTH_TEST)
gl.enable(gl.BLEND)
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
gl.disable(gl.STENCIL_TEST)
gl.disable(gl.CULL_FACE)
gl.frontFace( gl.CCW )
gl.cullFace( gl.FRONT )
gl.colorMask(true, true, true, true)
gl.activeTexture(gl.TEXTURE0)
var shaderManager = session.shaderManager
shaderManager._currentId = undefined
for (var i=0; i<shaderManager.attribState.length; i++)
shaderManager.attribState[i] = false
shaderManager.setShader(shaderManager.currentShader)
var blend = session.blendModeManager.currentBlendMode
if (blend in PIXI.blendModesWebGL) {
session.blendModeManager.currentBlendMode = undefined
session.blendModeManager.setBlendMode(blend)
}
κ·Έλ¬λ λλμ΄ μ½λλ₯Ό μ΄λμ μ½μ
ν΄μΌνκ³ session
λ³μκ° λ¬΄μμΈμ§ μ΄ν΄νμ§ λͺ»ν©λλ€. glμ΄ μΈ μΊλ²μ€μ glcontextλΌκ³ μμν©λλ€. μ΄ μμμ μ΄λμ λμ΄μΌν©λκΉ?
https://codepen.io/marco_fugaro/pen/QYgJQY?editors=0010
(λ¬Έμ λ μ°½μ ν¬κΈ° μ‘°μ μμ λ°μνκΈ° μμν©λλ€)
μμ μ 5.0.0-rc.2
κ° μμ΅λλ€. λ³κ²½ν΄μΌν©λκΉ?
μ΄ μμ μ μλ λͺ¨λ₯΄κ² μ§λ§ λ§μνμ λ΄μ©μ λͺ¨λ renderer.reset()
ν¬ν¨λμ΄ μμ΅λλ€.
const threeTexture = PIXI.Texture.from(threeApp.renderer.domElement)
μ΄κ²μ λμ μκ°μ λλ€.
# 5430 λ΄€μ΄?
@marcofugaro μ΄κ²μ λν λ€λ₯Έ νμ μ‘°μΉκ° μμ΅λκΉ?
@ivanpopelyshev @bigtimebuddy κΈ°λ€λ¦¬κ² ν΄μ μ£μ‘ν©λλ€. λλμ΄ λ λ€λ₯Έ μ°λ₯΄κΈ°λ₯Όνμ΅λλ€.
@ivanpopelyshev PRμ κ²μ ν pixi λ°λͺ¨μ μ΄μ 3 κ°μ κ°μ¬λ립λλ€. μ λ§ μ μ©νμ΅λλ€. λ€μ μμ μμ λ°©λ² 2λ₯Ό ꡬννλ €κ³ νμ΅λλ€. PIXI.Texture.from(threeApp.renderer.domElement)
? κ³ κΈ webglμ λ§μ΄ λͺ°λΌ μ£μ‘ν©λλ€)
λ€μμ pixi v5λ‘ λ³ν λ μμ λλ€.
https://codepen.io/marco_fugaro/pen/wOGpwv?editors=0010
λ΄κ° μ°Ύμ λͺ κ°μ§ λ¬Έμ :
context
λ§€κ° λ³μλ₯Ό νμ©νμ§ μμ΅λλ€. v4 μμ μλ λ€μμ΄ μμ΅λλ€.var renderer = new PIXI.WebGLRenderer(canvas.width, canvas.height, {
context: context, // shared context with threejs
λλ v5μμ μ΄κ²μνκ³ μλ€
return new PIXI.Application({
context: context, // shared context with threejs
νμ§λ§ λΆλͺ ν 무μλ©λλ€. λ°λͺ¨κ° μ΄λ»κ² μλνλμ§ λͺ¨λ₯΄κ² μ΅λλ€.
three.js ν μ€μ²λ Yμμ λ€μ§ν μμ΅λλ€ (μμμ, webgl).
μ°½ ν¬κΈ°λ₯Ό μ‘°μ ν λ ν μ€μ²κ° λ°λ λ°©ν₯μΌλ‘ λμ΄λ©λλ€. μλ§ λ΄κ° λκ° μλͺ»νκ³ μμκ±°μΌ
λ€μ νλ² μ‘°μ¬ν΄ μ£Όμ μ κ°μ¬ν©λλ€!
λ€λ₯Έ νλ‘μ νΈμμ μ΄λ¬ν λ¬Έμ λ₯Ό μμ νμΌλ©° λμ€μ ν΄λΉ μ½λμ λ°λͺ¨λ₯Ό λ§λ€ κ²μ λλ€. pixiκ° renderTargets (v5 renderTextures)λ₯Ό μ¬μ©νλ λ°©μμ λ°κΎΈλ v4 μ© ν¨μΉκ° μμ΅λλ€.
@ivanpopelyshev v5κ° λμμΌλ μ΄μ μμ λ₯Ό κ³ μΉ μ μμ΅λκΉ? π
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μ νλμ΄ λ°μνμ§ μμΌλ©΄ νμλ©λλ€. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
λΆμ€ λ΄μνμ§ μμ΅λλ€
μ§κΈκΉμ§ μ λ°μ΄νΈκ° μμ΅λκΉ? μ½λ νμ΄ μλνλ κ²μ²λΌ 보μ΄μ§λ§ ν΄νΉμ΄λλμ§ νμ€νμ§ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λ€λ₯Έ νλ‘μ νΈμμ μ΄λ¬ν λ¬Έμ λ₯Ό μμ νμΌλ©° λμ€μ ν΄λΉ μ½λμ λ°λͺ¨λ₯Ό λ§λ€ κ²μ λλ€. pixiκ° renderTargets (v5 renderTextures)λ₯Ό μ¬μ©νλ λ°©μμ λ°κΎΈλ v4 μ© ν¨μΉκ° μμ΅λλ€.