ガラスを割るエフェクト

アバター
SAI
記事: 115
登録日時: 14年前
住所: はひほーひ

ガラスを割るエフェクト

投稿記事 by SAI » 13年前

とうとうこれに手を出してしまいました。
パリーンですパリーン。ガシャーンかな?(どうでもいい)

いままでこれに手を出さなかった理由、それは、

三角形が描画できない!

これです。

画像を切り取ってバラバラに描画することがどうしてもできませんでした。
四角形なら簡単なのですが、三角形の、それもイビツな形のものは皆目見当がつきませんでした。
今回よさげなエフェクトを思いついたので、ぜひとも実現しようとDixqさんにDXライブラリでできないか尋ねました。

「DrawPolygon3Dでできますよ」
と言って、私がそれでも「?」だったのでサンプルコードを書いていただきました。
(サンプルコードはちょっと変えてあります)

CODE:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	ChangeWindowMode(TRUE),DxLib_Init();
	VERTEX3D Vertex[ 3 ]={};	//ポリゴン数X3つ必要
	int GrHandle = LoadGraph("sample.png");

	Vertex[ 0 ].pos  = VGet(  100.0f, 380.0f,  0.0f ) ;//表示する座標(左上)
	Vertex[ 0 ].norm = VGet(   0.0f,   0.0f, -1.0f ) ;//法線ベクトル(面がどっちに向いてるかってこと)
	Vertex[ 0 ].dif  = GetColorU8( 255,255,255,255 ) ;//拡散光色
	//反射光色も指定出来るけど省略
	Vertex[ 0 ].u    = 0.3f ;//画像中のどこか。uは画像のx、vは画像のy(0~1で指定)
	Vertex[ 0 ].v    = 0.2f ;

	Vertex[ 1 ].pos  = VGet( 380.0f, 240.0f,  0.0f ) ;//表示する座標(右)
	Vertex[ 1 ].norm = VGet(   0.0f,   0.0f, -1.0f ) ;//法線ベクトル(面がどっちに向いてるかってこと)
	Vertex[ 1 ].dif  = GetColorU8( 255,  0,255,255 ) ;//拡散光色(緑を抜いてみた)
	Vertex[ 1 ].u    = 0.8f ;//画像中のどこか。uは画像のx、vは画像のy(0~1で指定)
	Vertex[ 1 ].v    = 0.5f ;

	Vertex[ 2 ].pos  = VGet(   50.0f,   60.0f,  0.0f ) ;//表示する座標(左下)
	Vertex[ 2 ].norm = VGet(   0.0f,   0.0f, -1.0f ) ;//法線ベクトル(面がどっちに向いてるかってこと)
	Vertex[ 2 ].dif  = GetColorU8(   0,255,255,255 ) ;//拡散光色(赤を抜いてみた)
	Vertex[ 2 ].u    = 0.2f ;//画像中のどこか。uは画像のx、vは画像のy(0~1で指定)
	Vertex[ 2 ].v    = 0.7f ;

	DrawPolygon3D( Vertex, 1, GrHandle, FALSE ) ;//表示

	WaitKey() ;
	DxLib_End() ;
	return 0 ;
}

ふふ、何を言う。DrawPolygon3Dなんぞでできたら今までこんなに悩むわけが・・・・
[album]373[/album]
なん・・・・だと・・・!?

ことは単純だったのです。VERTEX3Dクラスのuとvで画像のどの部分を描画するかを決めていたのです。
今まで0.0fと1.0fしか代入したことなかったので理解できなかったのです。
その基本的なところをDixqさんに教わりました。サンプルコードまで書いていただいて本当にありがとうございます。

よっしゃ!バリバリ割れるエフェクト作ったるで!
このエフェクトを使う予定が四種類ほどあってですね、これを使う弾幕は作るのが楽しみです。
次はどうしたら三角形が四角形になるか、ですね。破片のなかには四角形になるものもあるので、その条件を考えたいと思います。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前

Re: ガラスを割るエフェクト

投稿記事 by Dixq (管理人) » 13年前

こんなに公開されることになるとは・・w
大したサンプルじゃないですが、お役にたてれば光栄です。
もしかしたらライバルを蹴落とす為に嘘を教えてるかもしれませんよ(←

アバター
SAI
記事: 115
登録日時: 14年前
住所: はひほーひ

Re: ガラスを割るエフェクト

投稿記事 by SAI » 13年前

え、なにそれヒドイ。
せっかくチャットで教えていただいたので、他の方にも是非知ってもらいたいと思いました。

なに!?これくらい常識ですと・・・!?
しかし知らない人にとってはきっと役に立ちます! 多分!

アバター
CorzY
記事: 16
登録日時: 15年前

Re: ガラスを割るエフェクト

投稿記事 by CorzY » 13年前

パクっちゃうぞw

アバター
SAI
記事: 115
登録日時: 14年前
住所: はひほーひ

Re: ガラスを割るエフェクト

投稿記事 by SAI » 13年前

代わりに作ってコードを教えてくだs(ry

なんだ・・・?
なんでみんなイジワルなんだ・・・?