Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
pixivFACTORYのプレビューを支える技術
Search
Akira Midorikawa
September 04, 2015
Programming
15k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pixivFACTORYのプレビューを支える技術
Akira Midorikawa
September 04, 2015
More Decks by Akira Midorikawa
See All by Akira Midorikawa
noteの記事レコメンドについて
redcap97
1
730
Other Decks in Programming
See All in Programming
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
220
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
200
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
840
スマートグラスで並列バイブコーディング
hyshu
0
290
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
150
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
2.3k
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
140
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.9k
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
From π to Pie charts
rasagy
0
230
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Producing Creativity
orderedlist
PRO
348
40k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
330
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Transcript
pixivFACTORYのプレ ビューを支える技術 みど
pixivFACTORYとは
pixivFACTORYではグッズの仕上がりの イメージを確認する機能を提供している
None
チーム内でプレビューと呼ばれている pixivFACTORYの売りのひとつ
今回はpixivFACTORYのプレビューに焦 点を絞ってお話ししたいと思います
1. ユーザがグッズに印刷したい画像をサーバに アップロードする 2. サーバでアップロードされた画像からプレビュー 画像を生成する 3. プレビュー画像をユーザに送る プレビューが出来るまで流れ
ユーザがアップロードした画像
プレビュー画像 (缶バッジ)
プレビュー画像は、基本的にマスクと画像 合成によって作られている
マスクによりグッズと形状をあわせる
画像合成によりグッズの質感や立体感を 表現する
缶バッジの場合
ユーザがアップロードした画像
正面から見える領域 (水色の線の内側)
マスクで形状をあわせる
影用の画像を乗算する
てかり用の画像を重ねる
マスクや合成用の画像はデザイナーが PhotoshopやIllustratorを駆使して作成し ている
マスクと画像合成の素材画像
マスク処理や画像合成をするために ImageMagickを利用している
ImageMagickによる処理 ImageMagickでは、マスクから画像合成までの全 ての処理を1回のコマンドで実行できる convert -compose In +swap input.png mask.png -composite
-compose Multiply shadow.png +swap -composite -compose DstOver lighting. png +swap -composite output.png
平面に印刷されているグッズに関しては、 マスクと画像合成でかなりそれっぽくなる
しかし、複雑な形をしているグッズの場合 は、マスクだけでは画像の形状をあわせ られない場合がある
タンブラーの場合(中央が膨らんでる)
タンブラーの場合(外側が狭まっている)
複雑な形状をしたグッズの場合は、グッ ズにあわせて画像を歪める必要がある
• Displacement Mapping (ImageMagick) • UV Mapping (Blender) pixivFACTORYが採用している方式
Displacement Mapping
マップ画像を使って対応する画像のピクセルを移 動させて画像を変形させる手法 法線マップと発想が似ているが、Displacement Mappingは各点を実際に移動させる点が違う Displacement Mapping
ImageMagickの処理 ImageMagickが2DバージョンのDisplacement Mappingをサポートしているので、マップ画像さえ あれば簡単に利用できる。 composite map_h.png input.png map_v.png - displace
210x40 output.png
クッションの例
ユーザがアップロードした画像
Displacement Mapping
マスク&画像合成
変換処理自体はImageMagickがやってく れるので、Displacement Mapping用の マップ画像の作成がとても重要になる
試行錯誤の結果、グリッドとグリッドを歪 めた画像を用意して、線の移動量から マップ画像を生成するツールを内製する
基準となるグリッド画像
クッション用に歪めたグリッド画像
生成されたマップ画像
Displacement Mappingの問題 • 正確に画像を歪めるのが難しい • 精度の高いマップ画像が必要になる • マップ画像を作るツールを内製しないといけな いので大変
この問題を解決するためにサーバに Blenderを導入する
• オープンソースの3DCGを制作するソフトウェア ◦ 3Dモデリング ◦ 3Dモデルのレンダリング Blenderとは
None
pixivFACTORYでは、Blenderを使って サーバで3Dモデルのレンダリングを行 なっている
• ユーザがアップロードした画像をテクスチャにす る • 3Dモデルにテキスチャマッピング(UVマッピン グ)することでグッズの形状に画像を歪める サーバサイドレンダリングの流れ
マグカップの場合
Blenderのレンダリング結果
マスク&画像合成
Blenderの良い所
• マルチプラットフォームなソフトウェア ◦ チームメンバーの開発機(Mac OS X, Linux)で動かせる ◦ サーバ(Linux)でも動かせる Blenderの良い所
Blenderの良い所 • 3Dモデルリングツール ◦ レンダリング結果を簡単に確認できる ◦ Displacement Mappingに比べるとはるかに楽にプレ ビューの調整が出来る
Blenderの良い所 • ヘッドレスで動かせる ◦ サーバでXを立ち上げる必要がない ◦ アプリケーションサーバからblenderコマンドをexecする だけで動かせる blender --background
mug.blend --python rendering.py
Blenderの良い所 • Pythonスクリプトでレンダリングの制御ができる ◦ 導入の決め手になった機能 ◦ あらゆる操作がプログラムから制御可能
Pythonスクリプトでやっていること • ユーザがアップロードした画像をテクスチャとし て設定する(画像のパスは環境変数でわたす) • モデルを複数方向からレンダリングする
None
• 複雑な形状のグッズの場合は3Dモデルを作成 するのが非常に大変になる Blenderを使ったプレビューの問題
まとめ (1/2) • pixivFACTORYではユーザがアップロードした 画像からプレビュー画像を生成する • マスクすることでグッズと形状をあわせる • 画像合成でグッズの質感や立体感を表現する
まとめ (2/2) • 複雑な形状をしたグッズの場合は画像を歪める 必要がある ◦ Displacement Mapping ◦ UV
Mapping