SlideShare a Scribd company logo
お絵描きソフト
「PaintField」の開発
seanchas_t
iofg2100.github.io/
詳しくは:
iofg2100.github.io/articles/developing-paintfield
概要
どんなソフト?
• http://iofg2100.github.io/PaintField
• 『PaintField』でググると出てくる
• ペンタブで使えるお絵描きソフト
• クロスプラットフォーム
• Mac, Linux, Windows
• オープンソース (LGPL)
スクリーンショット
きっかけ
• 2011年1月
• ペンタブを買った
• Mac向けの使いやすいお絵描きソフト
がない(꒪⌓꒪)
• 作ろう!!
その後
• 2年間ほど開発する
• 2013年1月 0.0.1リリース!!
• 現在 0.0.6
使った技術
開発環境
• 言語
• C++
• GUIツールキット
• Qt
Qt
• GUIツールキット
• 基本的には、GUIアプリを作るライブラリ
• Mac, Linux, Windows... に対応
• Qt 5.1で実験的にAndroidとiOSに対応
Qt
• ドキュメンテーションが読みやすい
• コード例や図を交えた説明が多い
• C++の難しさを和らげてくれる
• 標準ライブラリよりわかりやすい
文字列・コンテナ
SIMD命令
• 複数の値を一度に演算するCPU命令
• 1つずつ演算するより効率がいい
1.0 1.5 2.0 2.5
*
3.0 3.5 4.0 4.5
=
3.0 5.25 8.0 11.25
↑イメージ
SSE命令
• SIMD命令セットの一種
• x86系CPUに入っている
• float x4, double x2 の同時演算
• doubleはSSE2以降
•基本的に手動で使う必要がある
曲線補間
• マウスやペンタブからの入力
• →一定時間おきに送られてくる
• 結果「点列(線分列)」としての
入力に
• 点列を曲線に補間したい!
Catmull-Rom 補間
• 曲線補間の例: Catmull-Rom 補間
• 各点間はそれぞれ3次のパラメトリック曲線
• ある点での接ベクトルは
前の点から次の点へのベクトルと平行
Catmull-Rom 補間
P-1
P1
P2
P0
x(t) = a0 + a1t + a2t2
+ a3t3
y(t) = b0 + b1t + b2t2
+ b3t3
t 2 [0, 1]
x(0) = P0x
, y(0) = P0y
x(1) = P1x , y(1) = P1y
x0
(0) =
P1x
P 1x
2
y0
(0) =
P1y P 1y
2
x0
(1) =
P2x
P0x
2
y0
(1) =
P2y
P0y
2
3次B-Spline補間
• Catmull-Rom 補間と似ている
• 与えられた点を通らないのが違い
• なめらかになる
• PaintFieldではこちらを使用
ベジエ曲線へ変換
• Catmull-Rom曲線・3次B-Spline曲線・
ベジエ曲線
• →全部3次のパラメトリック曲線
• 相互に変換できる!!
• ベジエ曲線にして描画・・・などができる

More Related Content

Similar to お絵描きソフト「PaintField」の開発

20180822 ガチラボ vol.8
20180822 ガチラボ vol.820180822 ガチラボ vol.8
20180822 ガチラボ vol.8
Satoshi Fujimoto
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchShin Ise
 
㉜知育アプリを作ろう! Kwikで作るデジタル絵本
㉜知育アプリを作ろう! Kwikで作るデジタル絵本㉜知育アプリを作ろう! Kwikで作るデジタル絵本
㉜知育アプリを作ろう! Kwikで作るデジタル絵本
Nishida Kansuke
 
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
Nishida Kansuke
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
Naruto TAKAHASHI
 
ニコニコ超開発
ニコニコ超開発ニコニコ超開発
ニコニコ超開発
Akihiko Koizuka
 
できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16
Masami Yabushita
 
できる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリできる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:WebからはじまるアプリMasami Yabushita
 
わんくま勉強会東京#67 LT資料
わんくま勉強会東京#67 LT資料わんくま勉強会東京#67 LT資料
わんくま勉強会東京#67 LT資料
Kenji Daikoku
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
Yuki Igarashi
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19
Kenji Daikoku
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
 
Kinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考えるKinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考える
Yuki Igarashi
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alpha
Hiroshi Sakate
 
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Saya Katafuchi
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshopYoichiro Sakurai
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
Takeshi Komiya
 
ストアアプリ →universal Windows Apps =WP8.1アプリ
ストアアプリ→universal Windows Apps=WP8.1アプリストアアプリ→universal Windows Apps=WP8.1アプリ
ストアアプリ →universal Windows Apps =WP8.1アプリ
Akira Hatsune
 
Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)
Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)
Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)Makoto Nishimura
 

Similar to お絵描きソフト「PaintField」の開発 (20)

20180822 ガチラボ vol.8
20180822 ガチラボ vol.820180822 ガチラボ vol.8
20180822 ガチラボ vol.8
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
 
㉜知育アプリを作ろう! Kwikで作るデジタル絵本
㉜知育アプリを作ろう! Kwikで作るデジタル絵本㉜知育アプリを作ろう! Kwikで作るデジタル絵本
㉜知育アプリを作ろう! Kwikで作るデジタル絵本
 
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
 
ニコニコ超開発
ニコニコ超開発ニコニコ超開発
ニコニコ超開発
 
できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16
 
できる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリできる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリ
 
わんくま勉強会東京#67 LT資料
わんくま勉強会東京#67 LT資料わんくま勉強会東京#67 LT資料
わんくま勉強会東京#67 LT資料
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
Kinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考えるKinect v2を通してMicrosoft技術を考える
Kinect v2を通してMicrosoft技術を考える
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alpha
 
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
ストアアプリ →universal Windows Apps =WP8.1アプリ
ストアアプリ→universal Windows Apps=WP8.1アプリストアアプリ→universal Windows Apps=WP8.1アプリ
ストアアプリ →universal Windows Apps =WP8.1アプリ
 
Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)
Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)
Windows 8.1開発入門ー新しいストアアプリ環境について(公開用)
 
20140629 firefoxos-devenv
20140629 firefoxos-devenv20140629 firefoxos-devenv
20140629 firefoxos-devenv
 

お絵描きソフト「PaintField」の開発