This repository has been archived by the owner on Jul 16, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Reputeless edited this page Jan 12, 2017
·
6 revisions
Siv3D is a C++ library for games and interactive media. It supports many input devices such as Kinect, Leap Motion, webcams and microphones, and complex interactions can be coded in a few lines.
The best tool to enjoy application development.
数行~数十行のコードでインタラクティブなアプリケーションを開発できます。短時間で結果が得られるため、大学や専門学校のプログラミング教育でも活用されています。
音楽の再生や画像の表示、テンポやピッチの変更、波形編集、画像加工、AR マーカーの検出、Twitter への画像投稿といった様々な処理を易しいコードで実現します。
Kinect, Leap Motion, マイク、Web カメラ、ペンタブ、ゲームコントローラ、マルチタッチ、Arduino など、10 種類以上の入力機器を、2, 3 行のコードの追加で活用できます。
すべてのコードが最新の C++11/14 規格で書かれているため、Siv3D を使うことで新しい C++ の書き方を学習できます。(最新の C++ について知りたい方は [こちら](http://www.slideshare.net/Reputeless/c11c14))
洗練されたコードで、あらゆるアイデアを明快に表現します。
Shape and text```cpp # include
void Main() { const Font font(30);
while (System::Update())
{
Circle(Mouse::Pos(), 100).draw();
font(Mouse::Pos()).draw(50, 200, Palette::Orange);
}
}
<img src="https://github.com/Siv3D/Reference-JP/blob/master/resource/siv3d/top2.gif?raw=true" width="320" height="240" align="left">
Paint<br clear="left">
```cpp
# include <Siv3D.hpp>
void Main()
{
Image image(Window::Size(), Palette::White);
DynamicTexture texture(image);
while (System::Update())
{
if (Input::MouseL.pressed)
{
Line(Mouse::PreviousPos(), Mouse::Pos()).overwrite(image, 8, Palette::Orange);
texture.fill(image);
}
texture.draw();
}
}
```cpp # include
void Main() { const Size blockSize(40, 20); const double speed = 8.0; Rect wall(60, 10); Circle ball(320, 400, 8); Vec2 ballSpeed(0, -speed);
Array<Rect> blocks;
for (auto p : step({ Window::Width() / blockSize.x , 5 }))
{
blocks.emplace_back((p*blockSize).moveBy(0, 60), blockSize);
}
while (System::Update())
{
ball.moveBy(ballSpeed);
wall.setCenter(Mouse::Pos().x, 420);
for (auto it = blocks.begin(); it != blocks.end(); ++it)
{
if (it->intersects(ball))
{
(it->bottom.intersects(ball) || it->top.intersects(ball)
? ballSpeed.y : ballSpeed.x) *= -1;
blocks.erase(it);
break;
}
}
for (auto const& block : blocks)
{
block.stretched(-1).draw(HSV(block.y - 40));
}
if (ball.y < 0 && ballSpeed.y < 0)
{
ballSpeed.y *= -1;
}
if ((ball.x < 0 && ballSpeed.x < 0) || (Window::Width() < ball.x && ballSpeed.x > 0))
{
ballSpeed.x *= -1;
}
if (ballSpeed.y > 0 && wall.intersects(ball))
{
ballSpeed = Vec2((ball.x - wall.center.x) / 8, -ballSpeed.y).setLength(speed);
}
ball.draw();
wall.draw();
}
}
<img src="https://github.com/Siv3D/Reference-JP/blob/master/resource/siv3d/top4.gif?raw=true" width="320" height="240" align="left">
Kaleidoscope<br clear="left">
```cpp
# include <Siv3D.hpp>
void Main()
{
const int32 N = 12;
Image image(Window::Size(), Color(20, 40, 60));
DynamicTexture texture(image);
Mouse::SetTransform(Mat3x2::Translate(Window::Center()));
while (System::Update())
{
if (Input::MouseL.pressed)
{
for (auto i : step(N))
{
Circular cs[2] = { Input::MouseL.clicked ? Mouse::Pos() : Mouse::PreviousPos(), Mouse::Pos() };
for (auto& c : cs)
{
c.theta = i % 2 ? -c.theta - TwoPi / N * (i - 1) : c.theta + TwoPi / N * i;
}
Line(cs[0], cs[1]).moveBy(Window::Center()).overwrite(image, 2, HSV(System::FrameCount(), 0.5, 1.0));
}
texture.tryFill(image);
}
else if (Input::MouseR.clicked)
{
image.fill(Color(20, 40, 60));
texture.fill(image);
}
texture.draw();
}
}
Illustration by [古古米](http://www.pixiv.net/member.php?id=583587) ```cpp # include
void Main() { Texture texture;
Array<Rect> faces;
while (System::Update())
{
if (Dragdrop::HasItems())
{
if (Image image{ Dragdrop::GetFilePaths()[0] })
{
faces = Imaging::DetectFaces(image, CascadeType::Anime);
texture = Texture(image);
Window::Resize(texture.size);
}
}
texture.draw();
const double a = Sin(Time::GetMillisec() * 0.005) * 0.5 + 0.5;
for (const auto& face : faces)
{
face.drawFrame(3, 3, ColorF(Palette::Red, a));
}
}
}
<img src="https://github.com/Siv3D/Reference-JP/blob/master/resource/siv3d/top6.gif?raw=true" width="320" height="240" align="left">
Audio spectrum<br clear="left">
```cpp
# include <Siv3D.hpp>
void Main()
{
const Sound sound = Dialog::OpenSound();
sound.play();
while (System::Update())
{
const auto fft = FFT::Analyze(sound);
for (auto i : step(320))
{
RectF(i * 2, Window::Height(), 2, -Pow(fft.buffer[i], 0.6) * 1000).draw(HSV(240 - i));
}
}
}
```cpp # include
void Main() { KinectV2::Start();
DynamicTexture depthTexture;
std::array<Optional<KinectV2Body>, 6> bodies;
while (System::Update())
{
if (KinectV2::HasNewDepthFrame())
{
KinectV2::GetDepthFrame(depthTexture);
}
if (KinectV2::HasNewBodyFrame())
{
KinectV2::GetBodyFrame(bodies);
}
depthTexture.draw();
for (const auto& body : bodies)
{
if (body)
{
for (const auto& joint : body->joints)
{
Circle(joint.depthSpacePos, 15).drawFrame(6.0, 0.0, Palette::Red);
}
}
}
}
}
<img src="https://github.com/Siv3D/Reference-JP/blob/master/resource/siv3d/top8.gif?raw=true" width="320" height="240" align="left">
Earth<br clear="left">
```cpp
# include <Siv3D.hpp>
void Main()
{
const Texture texture(L"Example/Earth.jpg", TextureDesc::For3D);
while (System::Update())
{
Graphics3D::FreeCamera();
const double yaw = Time::GetMillisec() * -0.0001;
Sphere(10, Quaternion::Yaw(yaw).roll(-23.4_deg)).draw(texture);
}
}
- Home
- How to Install
- Features
- System Requirements
- License
- FAQ
- Gallery
- Events
- Mascot
- Change Log
- Next Version
- 最新版の新機能サンプル
- 数字で見る Siv3D
- Contribution
- Donations
- Basic Concept
- Draw a Shape
- Draw a Texture
- Draw a Text
- Formatting
- Keyboard Input
- Mouse Input
- Audio Playback
- MIDI Playback
- Window and Background
- 2D Collision
- Random Number
- Dialog
- Drag and Drop
- Application State
- Text File
- INI, CSV, JSON
- Binary File
- GUI
- Asset Management
- Image Processing
- Webcam
- Audio Recording
- Stopwatch
- HSV Color
- HTTP Client
- 3D Rendering
- 2D Render States
- 3D Render States
- Particles
- Screen Capture
- Publish Your App
- Learn More
- アプリランチャーを作ろう
- 音楽プレイヤーを作ろう
- 横スクロールゲームを作ろう
- ドット絵エディタを作ろう
- シーン遷移をサポートする SceneManager の使い方
- Siv3D ミニサンプル集
- タスクシステムを使う
- Tobii EyeX
- ペンタブレット
- マルチタッチ
- [Xbox 360コントローラー](https://github.com/Siv3D/Reference-JP/wiki/Xbox 360コントローラー)
- ゲームパッド
- [Leap Motion](https://github.com/Siv3D/Reference-JP/wiki/Leap Motion)
- [Kinect v1](https://github.com/Siv3D/Reference-JP/wiki/Kinect v1)
- [Kinect v2](https://github.com/Siv3D/Reference-JP/wiki/Kinect v2)
- スケッチ
- 画像ビューアー
- オーディオスペクトラム
- マイク入力スペクトラム
- 文字色の反転
- 天気予報
- ドットお絵かき
- 15パズル
- ブロックくずし
- 時計
- 音楽プレイヤー
- ピアノ
- ライフゲーム
- シーン管理
- 地球
- 3Dシーン
- 3D交差判定
- [Wooden Mirror](https://github.com/Siv3D/Reference-JP/wiki/Wooden Mirror)
- シューティングゲーム
- [Image to Polygon](https://github.com/Siv3D/Reference-JP/wiki/Image to Polygon)
- [Sketch to Polygon](https://github.com/Siv3D/Reference-JP/wiki/Sketch to Polygon)
- 軌跡
- Plot3D
- テンポとピッチの変更
- 長方形の影
- Twitterクライアント
- [Polygon to Mesh](https://github.com/Siv3D/Reference-JP/wiki/Polygon to Mesh)
- 3Dテキスト
- アプリ終了の確認
- 地形の生成
- アーカイブファイル
- GUIのアニメーション
- [Aero Glassエフェクト](https://github.com/Siv3D/Reference-JP/wiki/Aero Glassエフェクト)
- Glitch
- リンクテキスト
- 付箋
- シーン切り替え(シルエット)
- MIDIシーケンサー
- 数つなぎ
- 画面を揺らす
- 対称定規
- aobench
- MIDIビジュアライザー
- 電卓
- 手書き文字認識
- 顔検出
- 音声合成
- Image to PhysicsBody