์ด๋ฏธ์ง ๋ก๋
์ด๋ฏธ์ง๋ก ์์ ํ๊ธฐ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ์น ์๋ฒ์์ ์ฌ์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ๋ก ์ด๋ฏธ์ง ํ์ผ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ PIXI.Texture.from()์ํด ๋น ๋ฅธ ๋ฐ๋ชจ์ฉ์ผ๋ก ์๋ํ๋ ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ํ๋ก๋์ ์์๋ Loader ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ก๋๋ ์์๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ๊ณ ๊ด๋ฆฌํ์ฌ <IMG>๋ธ๋ผ์ฐ์ ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋๋ก ์ง์ํ ๋ค์ ์๋ฃ๋๋ฉด ์๋ ค์ค๋๋ค. ์ด ํ๋ก์ธ์ค๋ ๋น๋๊ธฐ์ ์ ๋๋ค . ๋ก๋๋ฅผ ์์ฒญํ ๋ค์ ์๊ฐ์ด ์ง๋๋ฉด ๋ก๋๊ฐ ์๋ฃ๋์์์ ์๋ฆฌ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค.
BaseTextures๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค
๋ก๋๊ฐ ์์ ์ ์๋ฃํ๋ฉด ๋ก๋๋ <IMG>์์์ ํ์ํ ํฝ์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ์ฌ์ฉํ๋ ค๋ฉด PixiJS๊ฐ ์์ ์ด๋ฏธ์ง ํ์ผ์ ๊ฐ์ ธ์ GPU์ ์ ๋ก๋ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํ ์ค์ฒ ์์คํ ์ ์ง์ ํ ์ฃผ์ญ์ธ BaseTexture ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ BaseTexture๋ ๋จ์ผ ํฝ์ ์์ค(์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ์ง์ด์ง๋ง Canvas ๋๋ Video ์์์ผ ์๋ ์์)๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. BaseTexture๋ฅผ ์ฌ์ฉํ๋ฉด PixiJS๊ฐ ์ด๋ฏธ์ง๋ฅผ ํฝ์ ๋ก ๋ณํํ๊ณ ํด๋น ํฝ์ ์ ๋ ๋๋ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ๋ฉ ๋ชจ๋(0.0-1.0 ๋ฒ์ ๋ฐ์ UV ์ขํ์ฉ) ๋ฐ ์ค์ผ์ผ ๋ชจ๋(ํ ์ค์ฒ ํฌ๊ธฐ ์กฐ์ ์ ์ฌ์ฉ)์ ๊ฐ์ด ํ ์ค์ฒ ๋ฐ์ดํฐ๊ฐ ๋ ๋๋ง๋๋ ๋ฐฉ์์ ์ ์ดํ๋ โโ์ค์ ๋ ํฌํจ๋์ด ์์ต๋๋ค.
BaseTexture๋ ์๋์ผ๋ก ์บ์๋๋ฏ๋ก PIXI.Texture.from()๋์ผํ URL์ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ฉด ๋งค๋ฒ ๋์ผํ BaseTexture๊ฐ ๋ฐํ๋ฉ๋๋ค. BaseTexture๋ฅผ ํ๊ดดํ๋ฉด ์ฐ๊ด๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๊ฐ ํด์ ๋ฉ๋๋ค.
ํ ์ค์ฒ ๋ถ๋ฌ์ค๊ธฐ
์ดํ ๊ฐ์ด๋์์ ๋ฆฌ์์ค ๋ก๋ฉ์ ๋ํด ๋ ผ์ํ๊ฒ ์ง๋ง, ์๋ก์ด ์ฌ์ฉ์๊ฐ PixiJS ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ๋ ์ง๋ฉดํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ค ํ๋๋ ํ ์ค์ฒ๋ฅผ ๊ฐ์ฅ ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐ๋ชจ ์ค๋ํซ์์์ ๊ฐ์ด ์ฌ์ฉ PIXI.Texture.from()ํ๋ฉด ์๋ํ์ง๋ง ๊ฐ์ฒด๊ฐ ์ฅ๋ฉด ๊ทธ๋ํ์์ ์ด๋ฏธ ๋ ๋๋ง๋๋ ๋์ ๊ฐ ํ ์ค์ฒ๊ฐ ๋ก๋๋ ๋ ํ์ ์ด ๋ฐ์ํฉ๋๋ค.
๋์ , ๋ค์์ ์ข์ ์๋ฃจ์ ์ ๋ํ ๋น ๋ฅธ ์นํธ ์ํธ์ ๋๋ค.
- ๋ก๋ฉ ์ด๋ฏธ์ง ํ์
- ๋ก๋ ๋ง๋ค๊ธฐ
- ๋ชจ๋ ํ ์ค์ฒ ๊ธฐ๋ฐ ๊ฐ์ฒด ์คํ, ํ ์ค์ฒ๋ฅผ ๋ก๋์ ์ถ๊ฐ
- ๋ก๋๋ฅผ ์์ํ๊ณ ์ ํ์ ์ผ๋ก ์งํ๋ฅ ์ฝ๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋ก๋ฉ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ๋ก๋ ์๋ฃ ์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์คํ PIXI.Texture.from()ํ๊ณ ํ ์ค์ฒ ์บ์์์ ๋ก๋๋ ํ ์ค์ฒ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
- ํ ์ค์ฒ ์ค๋น(์ ํ ์ฌํญ - ์๋ ์ฐธ์กฐ)
- ๋ก๋ฉ ์ด๋ฏธ์ง ์จ๊ธฐ๊ธฐ, ์ฅ๋ฉด ๊ทธ๋ํ ๋ ๋๋ง ์์
์ด ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ค์ฒ๊ฐ ๋ฏธ๋ฆฌ ๋ก๋๋์ด ํ์ธ์ ๋ฐฉ์งํ๊ณ ์๋์ ์ผ๋ก ์ฝ๊ฒ ์ฝ๋ฉํ ์ ์์ต๋๋ค.
ํ ์ค์ฒ ์ค๋น ๊ด๋ จ: ํ ์ค์ฒ๋ฅผ ๋ก๋ํ ํ์๋ ์ด๋ฏธ์ง๋ฅผ GPU๋ก ํธ์ํ๊ณ ๋์ฝ๋ฉํด์ผ ํฉ๋๋ค. ๋ง์ ์์ ์์ค ์ด๋ฏธ์ง์ ๋ํด ์ด ์์ ์ ์ํํ๋ฉด ์๋๊ฐ ๋๋ ค์ง๊ณ ํ๋ก์ ํธ๊ฐ ์ฒ์ ๋ก๋๋ ๋ ์ง์ฐ ๊ธ์ฆ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํ๋ก์ ํธ๋ฅผ ํ์ํ๊ธฐ ์ ์ ๋ง์ง๋ง ๋จ๊ณ์์ ํ ์ค์ฒ๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ ์ ์๋ ์ค๋น ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
https://pixijs.io/guides/basics/textures.html
PixiJS: Textures
pixijs.io
How to create sprite sheets & animations for PixiJS 5
© 2022 by CodeAndWeb GmbH. All rights reserved.
www.codeandweb.com
https://www.pixiplayground.com/#/edit/FoChFu40Ql48ApAaf_BbG
์ค์ต ์ฝ๋
//pixi์ ์คํ๋ผ์ดํธ ํด๋์ค๋ฅผ ์์ฑํ๊ณ
const girlTexture = PIXI.Texture.from('images/girl.png');
//ํ
์ค์ฒ๋ฅผ ์ธ์๋ก ์ค์ ํ๋ ์คํ๋ผ์ดํธ ํด๋์ค๋ฅผ ์์ฑํด์ค๋ค.
const girlSprite = new PIXI.Sprite(girlTexture);
//์คํ๋ผ์ดํธ๋ฅผ ์คํ
์ด์ง์ ์ถ๊ฐํด์ค๋ค.
app.stage.addChild(girlSprite);
์ ์ฒด ์ฝ๋
const Application = PIXI.Application;
const app = new Application({
width: window.innerWidth,
height: window.innerHeight,
transparent: false,
antialias: true,
backgroundColor: 0xAAAAAA
});
//๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ
app.renderer.backgroundColor = 0x23395D;
//์์ฑ์๊ฐ ์๋๋๋ผ๋ ์ด์ ๊ฐ์ด ํฌ๊ธฐ ์กฐ์ ๊ฐ๋ฅ
app.renderer.view.style.position = 'absolute';
document.body.appendChild(app.view);
const graphics = PIXI.Graphics;
//pixi์ ์คํ๋ผ์ดํธ ํด๋์ค๋ฅผ ์์ฑํ๊ณ
const girlTexture = PIXI.Texture.from('images/girl.png');
//ํ
์ค์ฒ๋ฅผ ์ธ์๋ก ์ค์ ํ๋ ์คํ๋ผ์ดํธ ํด๋์ค๋ฅผ ์์ฑํด์ค๋ค.
const girlSprite = new PIXI.Sprite(girlTexture);
//์คํ๋ผ์ดํธ๋ฅผ ์คํ
์ด์ง์ ์ถ๊ฐํด์ค๋ค.
app.stage.addChild(girlSprite);
์บก์ฒ
'Javascript > pixi.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PIXI] ticker ์ฌ์ฉ๋ฐฉ๋ฒ (0) | 2022.12.26 |
---|---|
[PIXI] PIXI.Text์ PIXI.TextStyle ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2022.12.26 |
[PIXI] Graphic ํด๋์ค ํ์ฉํ์ฌ ๋ํ๊ทธ๋ฆฌ๊ธฐ (0) | 2022.12.26 |
[PIXI] app.view(์ฌ์ค์ ์บ๋ฒ์ค ํ๊ทธ) ์์ฑ ์ดํด๋ณด๊ธฐ (0) | 2022.12.23 |
[Pixi.js] ํ๊ฒฝ์ค์ ๊ณผ PIXI ๊ฐ์ฒด ์ดํด๋ณด๊ธฐ (0) | 2022.12.21 |