KumaMCN唯一?のガチ勢、ガチ本です。
クラッピーチャレンジ Advent Calendar 2017 24日目の記事です!
メリークリスマス(イブ)!楽しんでるかいパーリーピーポーw卍
遅くなってすみません。ガチ腹痛で倒れておりました…何食べたかなクラッピー
今回は、クラッピーでノリノリになれるインタラクティブなアート&VJパーリーに持って来いなものを2分で作った件についてです。
つくると3!の夜のVJで、みんなで光るクラッピーを持って踊ったのが楽しすぎて…
それからというものKumaMCNはクラッピーの光モノを量産し、流行らせました。(手だけ欲しい…)
点灯試験 pic.twitter.com/tThuS68a1T
— まこらぎ (@makoragi) 2017年8月10日
作り方
今回用いるのは、クラッピーチャレンジャーまこらぎさんが作ったクラッピーでスライド送り(Digisparkが埋め込んであり、拍手するとEnterキーを送信できる)とSiv3Dを用いてパーティクルを表示します!
- Windows 10
- Visual Studio 2017
- Siv3D
- プロジェクター
- DJ
- クラッピーでスライド送り
クラッピーのパチパチと文字入力を連動した。USBポートに挿すだけで文字入力してくれるのはいいね。100円台のDigispark大活躍。#クラッピーチャレンジ #パチパチトール君 #KumaMCN pic.twitter.com/MiRJ9JJql1
— まこらぎ (@makoragi) 2017年7月5日
クラッピーへのDigispark固定方法を検討中 #クラッピーチャレンジ pic.twitter.com/l2PIPnb2FM
— まこらぎ (@makoragi) 2017年8月22日
Siv3Dは、C++で簡単にゲームやメディアアートアプリが作れるライブラリです。
Kinectなどのセンサーにも対応しています。
Kinectとスラックラインのコラボした際にも活用しました!
今回、参考にしたソースコードはこちら。
ソースコードを次のように編集し、拍手のタイミングでEnterキーが送信され、パーティクルが大きくなるように可視化しました。
# include <Siv3D.hpp>
void Main()
{
Graphics::SetBackground(Color(20, 40, 60));
Graphics3D::SetLight(0, Light::None());
const Texture textureGrass(L"Example/Grass.jpg", TextureDesc::For3D);
Array<Particle> particles(400);
// フルスクリーン可能な解像度一覧を取得
const Array<Size> resolutions = Graphics::GetFullScreenSize();
for (auto& particle : particles)
{
const Vec3 pos = RandomVec3({ -20, 20 }, { -0.2, 4 }, { -20, 20 });
particle = Particle(pos, 0.2, ColorF(1.0, 0.6, 0.0));
}
const Texture texture(L"Example/Particle.png", TextureDesc::For3D);
Graphics3D::SetBlendStateForward(BlendState::Additive);
Graphics3D::SetDepthStateForward(DepthState::TestOnly);
bool enterFlag = false;
const Size targetSize(1280, 720);
while (System::Update())
{
if (Input::KeyF.clicked)
{
// フルスクリーンモード
if (!Window::SetFullscreen(true, targetSize))
{
System::Exit();
}
}
if (Input::KeyW.clicked)
{
// ウィンドウモード
if (!Window::SetFullscreen(false, targetSize))
{
System::Exit();
}
}
Graphics3D::FreeCamera();
if ((Input::KeyEnter).pressed) {
enterFlag = true;
}
else {
enterFlag = false;
}
for (auto& particle : particles)
{
particle.pos.y += 0.01f;
if (4.0 < particle.pos.y)
{
particle.pos.y -= 4.2f;
}
const ColorF color = HSV(particle.pos.y * 100.0);
const float s = 1.0f - (Abs(2.0f - particle.pos.y) / 2.0f);
if(enterFlag){
particle.scaling.x = particle.scaling.y = 1.0f * s;
}
else {
particle.scaling.x = particle.scaling.y = 0.2f * s;
}
particle.color.w = s;
particle.color = Vector4D<float>(color.b, color.g, color.r, color.a);
}
Plane(40).draw(textureGrass);
Graphics3D::DrawParticlesForward(particles, texture);
}
}
結果
インタラクションでもクラッピー、「パーティクルッピー」でした。
クラッピーでパーリーしたいやつらはKumaMCNについてこい!卍卍