18
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LIGincAdvent Calendar 2015

Day 19

pixi.jsのフィルターを試してみました

Posted at

LIGアドベントカレンダー19日目です! こんにちは@jun01itoです。デザイナーやってます。アワードなんかを見ていると、WebGL系がすごい勢いですね~中でも、

  • WebGL 2D系 pixi.js
  • WebGL 3D系 three.js

を使っているなぁという印象です。そんなわけでWebGL~シェーダーを簡単に追加できるpixi.jsのフィルターを試してみました。公式サンプル見ながらやってみます。
公式のpixi sample

今回のバージョンは Pixi.js 3.0.8

 

サンプルがv3じゃない...

sampleとドキュメントを見比べてみるのが良さそうです。
pixi docs

  • new PIXI.filtersに変更されてる
  • フィルター数も増えてる

はじめにテクスチャを読み込んでみます

	var WW = document.documentElement.clientWidth;
	var WH = document.documentElement.clientHeight;

	var renderer = PIXI.autoDetectRenderer(WW, WH,{backgroundColor : 0x000000});
		renderer.view.style.position = "absolute"
		renderer.view.style.width = window.innerWidth + "px";
		renderer.view.style.height = window.innerHeight + "px";
		renderer.view.style.display = "block";
	
	document.body.appendChild(renderer.view);
	
	var stage = new PIXI.Container();
	var texture = PIXI.Texture.fromImage("テクスチャ画像のパス");
	var sprite1 = new PIXI.Sprite(texture);
	stage.addChild(sprite1);

    //- ここでフィルターを呼ぶ

	render();
	function render() {
	    requestAnimationFrame(render);
	    renderer.render(stage);
	}

これだけでcanvasにテクスチャ画像が読み込まれます。

01.png

次にフィルターを適応してみます

以下を追加するだけ。

var twistFilter = new PIXI.filters.TwistFilter();
stage.filters = [ twistFilter ];

02.png

たったの2行でした。。。
フィルターの追加は、filtersの配列に追加すればOKのようです。
読み込む順番も関係しているようで、sampleに合わせた順番で。

他のフィルターも試してみます

他のフィルターも試してみて、displacementFilterというフィルターが他のと少し違うフィルターでした。displacementは「置換」という意味通りで、テクスチャ画像をフィルター画像に置き換えるエフェクトのようです。

sampleではこんな画像を読み込んでいました

displacement.jpg

photoshopでdisplacement.jpg
  • ベタ塗り(#000000)
  • 描画(ファイバー)
  • 描画(雲模様1)
  • 白黒

の順番で効果をかけると似たような画像が作れました。この画像でよければご自由にお使いください。読み込んだテクスチャ画像でフィルターエフェクトがかけられますので色々応用できそうです。

displacementFilter

var displacementFilter = new PIXI.filters.DisplacementFilter(PIXI.Sprite.fromImage("フィルター用の画像パス"));
displacementFilter.scale.x = 70;
displacementFilter.scale.y = 70;

03.png

分かりやすいように、displacementFilterだけ適用してみました。いい感じです。

まとめ

  • filterの追加は、filters配列に追加する
  • 複数読み込みの場合は順番に注意

あとは、blurのエフェクトがキレイな感じで使いどころ多そう。

04.png
05.png
06.png

pixi.jsいいですねー/それではまた_(・・)/

18
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?