250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ใ…ฃใ„ท
  • ์ปดํฌ์ง€์…˜
  • ์œ„์ž„
  • MySQL

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

[PIXI] ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜์—ฌ texture -> sprite -> canvas์— add ํ•˜๋Š” ๊ณผ์ •
Javascript/pixi.js

[PIXI] ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜์—ฌ texture -> sprite -> canvas์— add ํ•˜๋Š” ๊ณผ์ •

2022. 12. 26. 20:03
728x90

์ด๋ฏธ์ง€ ๋กœ๋“œ

์ด๋ฏธ์ง€๋กœ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์›น ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ 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()ํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€๋งŒ ๊ฐœ์ฒด๊ฐ€ ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„์—์„œ ์ด๋ฏธ ๋ Œ๋”๋ง๋˜๋Š” ๋™์•ˆ ๊ฐ ํ…์Šค์ฒ˜๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ํŒ์—…์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹ , ๋‹ค์Œ์€ ์ข‹์€ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๋น ๋ฅธ ์น˜ํŠธ ์‹œํŠธ์ž…๋‹ˆ๋‹ค.

  1. ๋กœ๋”ฉ ์ด๋ฏธ์ง€ ํ‘œ์‹œ
  2. ๋กœ๋” ๋งŒ๋“ค๊ธฐ
  3. ๋ชจ๋“  ํ…์Šค์ฒ˜ ๊ธฐ๋ฐ˜ ๊ฐ์ฒด ์‹คํ–‰, ํ…์Šค์ฒ˜๋ฅผ ๋กœ๋”์— ์ถ”๊ฐ€
  4. ๋กœ๋”๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์„ ํƒ์ ์œผ๋กœ ์ง„ํ–‰๋ฅ  ์ฝœ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋กœ๋”ฉ ์ด๋ฏธ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  5. ๋กœ๋” ์™„๋ฃŒ ์‹œ ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ์‹คํ–‰ PIXI.Texture.from()ํ•˜๊ณ  ํ…์Šค์ฒ˜ ์บ์‹œ์—์„œ ๋กœ๋“œ๋œ ํ…์Šค์ฒ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  6. ํ…์Šค์ฒ˜ ์ค€๋น„(์„ ํƒ ์‚ฌํ•ญ - ์•„๋ž˜ ์ฐธ์กฐ)
  7. ๋กœ๋”ฉ ์ด๋ฏธ์ง€ ์ˆจ๊ธฐ๊ธฐ, ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„ ๋ Œ๋”๋ง ์‹œ์ž‘

์ด ์›Œํฌํ”Œ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…์Šค์ฒ˜๊ฐ€ ๋ฏธ๋ฆฌ ๋กœ๋“œ๋˜์–ด ํŒ์ธ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฝ๊ฒŒ ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…์Šค์ฒ˜ ์ค€๋น„ ๊ด€๋ จ: ํ…์Šค์ฒ˜๋ฅผ ๋กœ๋“œํ•œ ํ›„์—๋„ ์ด๋ฏธ์ง€๋ฅผ GPU๋กœ ํ‘ธ์‹œํ•˜๊ณ  ๋””์ฝ”๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์ˆ˜์˜ ์†Œ์Šค ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฒ˜์Œ ๋กœ๋“œ๋  ๋•Œ ์ง€์—ฐ ๊ธ‰์ฆ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ ํ…์Šค์ฒ˜๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์ค€๋น„ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://pixijs.io/guides/basics/textures.html

 

PixiJS: Textures

 

pixijs.io

https://www.codeandweb.com/texturepacker/tutorials/how-to-create-sprite-sheets-and-animations-with-pixijs5

 

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);

 

์บก์ฒ˜

728x90

'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
    'Javascript/pixi.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [PIXI] ticker ์‚ฌ์šฉ๋ฐฉ๋ฒ•
    • [PIXI] PIXI.Text์™€ PIXI.TextStyle ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
    • [PIXI] Graphic ํด๋ž˜์Šค ํ™œ์šฉํ•˜์—ฌ ๋„ํ˜•๊ทธ๋ฆฌ๊ธฐ
    • [PIXI] app.view(์‚ฌ์‹ค์ƒ ์บ”๋ฒ„์Šค ํƒœ๊ทธ) ์†์„ฑ ์‚ดํŽด๋ณด๊ธฐ
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”