

iosアプリをobjective-cで開発しています。  
正距円筒図法の画像を球面にマッピングして画面上に球体で表示したいのですが、画像変換などに疎く実装方法で悩んでいます。  
詳しい方教えていただけないでしょうか？


CC BY-SA 3.0
2016-08-24T12:10:24.213
28471
2016-09-03T03:40:54.100
18585
question
objective-c
iosアプリで正距円筒図法の画像を球面にマッピングして画面上に球体で表示する方法


質問者さんが、どういうレベルの回答を求めているのか、どういうアプリ構成の中で実装しようとしているのか、そこらへんの説明があると、回答がつきやすいのではないかと思います。（一週間経ても、回答もコメントもつかないのは、その説明がないせいではないでしょうか？）  
ここでいう「レベル」とは、プログラミング言語を、低レベル（低水準）言語、高レベル（高水準）言語と分類するときに使われる、レベルという言葉に近いものです。低レベルな回答ならば、「
**OpenGL ES** の勉強をしましょう」となります。OpenGLは、言語やデバイスに依存しない、3DグラフィックのAPIで、Mac
OS、iOSなどは、3Dグラフィック技術にOpenGL ESを採用しています（ESは、OpenGLの中で、やや簡便なAPIを指します）。OpenGL
ESをプログラムの中に実装する手段として、 **GLKit Framework** が提供されています。

[iOS OpenGL ES
プログラミングガイド](https://developer.apple.com/jp/documentation/OpenGLES_ProgrammingGuide.pdf)（PDF書類）

「球面へマッピング」を、ブラーや色調整といったフォトレタッチの一種とお考えだとしたら、 **CoreImage Framework**
を調べてみるといいでしょう。CIFilterクラスによって、さまざまな画像処理ができることがわかると思います。

[Core Image Programming
Guide](https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_intro/ci_intro.html)

ただし、Apple純正のフィルタの中に、「球面へマッピング」というフィルタは（おそらく）ありません。

もっとも高レベルな回答は、 **SceneKit**
を利用することです。OpenGLに関する知識を（ほぼ）必要とせずに、3Dグラフィックを編集できるのですから、たしかに _もっとも_ 高レベルな回答です。

_マッピングする画像_

[![画像の説明をここに入力](https://i.stack.imgur.com/hiUdF.png)](https://i.stack.imgur.com/hiUdF.png)

_「正距円筒図法」によるマッピングの結果_

[![画像の説明をここに入力](https://i.stack.imgur.com/774sS.png)](https://i.stack.imgur.com/774sS.png)

しかし、この回答の難点は、SceneKitはゲームを製作するためのフレームワークであって、純粋に3Dグラフィックを取り扱うものではないという点です。グラフィック処理なら、最終的にファイルあるいはNSDataオブジェクトとして出力して欲しいとことですが、それができません。（UIImageで取り出すことはできるようです）


CC BY-SA 3.0
2016-09-01T13:22:34.733
28625
2016-09-03T03:40:54.100
2016-09-03T03:40:54.100
18540
18540
28471
answer