質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1735閲覧

Objective-c のコードをswiftに変換したいです。

ccchogeee

総合スコア11

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/11/09 08:01

編集2020/11/12 07:55

前提・実現したいこと

ARKitを用いて顔パーツの座標を取得し、その座標をiPhoneの画面の座標に変換したいと思っています。

以前こちらで質問させていただいた際に、参考になるサイトを教えていただいたのですが、コードがobjective-cで書かれています。swiftのコードに変換して試してみたいのですが、objective-cを触った経験がなく、調べているもののなかなか変換ができずにいます。

以下のコードをobjective-cをswiftに変換する際に、
参考になるサイトがありましたら教えていただきたいです。
もしくは、変換するコツや方法等がありましたらご教授いただきたいです。

サイト:https://ringsbell.blog.fc2.com/blog-entry-1270.html

objectivec

1+(SCNNode *)makeLineNodeForSCNVectors:(SCNVector3 *)positions 2{ 3 int indicies[] = {0,1}; 4 NSData *indexData = [NSData dataWithBytes:indicies length:sizeof(indicies)]; 5 6 SCNGeometrySource *vertexSource = [SCNGeometrySource geometrySourceWithVertices:positions count:2]; 7 SCNGeometryElement *element = [SCNGeometryElement geometryElementWithData:indexData primitiveType:SCNGeometryPrimitiveTypeLine primitiveCount:2 bytesPerIndex:sizeof(int)]; 8 SCNGeometry *line = [SCNGeometry geometryWithSources:@[vertexSource] elements:@[element]]; 9 10 SCNNode *lineNode = [SCNNode nodeWithGeometry:line]; 11 12 return lineNode; 13} 14 15{ 16 //呼び出す側 17 SCNVector3 positions[] = { SCNVector3Make(-3.0 , 3.0 , 0.0) , SCNVector3Make(3.0 , 3.0 , 0.0) }; 18 SCNNode *lineNode = [MyUtility makeLineNodeForSCNVectors:positions]; 19 lineNode.geometry.firstMaterial.diffuse.contents = [UIColor whiteColor]; 20}

サイト:https://ringsbell.blog.fc2.com/blog-entry-1277.html

objectivec

1{ 23 ARFaceGeometry *arFaceGeometry = faceAnchor.geometry; 4 const simd_float3 *vertices = arFaceGeometry.vertices; 5 simd_float3 pos3 = vertices[vertexIte];// —(1) 6 simd_float4 position = simd_make_float4(pos3 , 1.0); 7 8 simd_float4x4 modelMatrix = faceAnchor.transform;// —(2) 9 10 ARFrame *frame = arsceneView.session.currentFrame; 11 ARCamera *arcamera = frame.camera; 12 simd_float4x4 viewMatrix = [arcamera viewMatrixForOrientation:UIInterfaceOrientationPortrait];// —(3) 13 14 SCNCamera *camera = arsceneView.pointOfView.camera; 15 SCNMatrix4 cameraProjectionMatrix = camera.projectionTransform; 16 simd_float4x4 projectionMatrix = SCNMatrix4ToMat4(cameraProjectionMatrix);// —(4) 17 18 simd_float4x4 matrices = matrix_multiply(viewMatrix,modelMatrix); 19 matrices = matrix_multiply(projectionMatrix,matrices);// —(5) 20 21 position = matrix_multiply(matrices, position); 22 position = position / position.w;// —(6) 23 24 float xx = (position.x+1.0)/2.0 * arsceneView.frame.size.width; 25 float yy = (-position.y+1.0)/2.0 * arsceneView.frame.size.height;// —(7) 26 27 marker.center = CGPointMake(xx, yy);// —(8) 28}

試したこと

こちらのサイトが今のところ一番参考になっていたのですが、
載っていないことも多く、あまり進みませんでした。

その他

よろしくお願いします!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thyda.eiqau

2020/11/16 06:35

何がわからないのか具体的に提示いただいたほうが回答しやすいです。おそらくご自身なりにやってみて、エラーが出るとかビルドできない等の問題に直面されているかと思いますが、そのエラーをひとつづつ潰していくアプローチがいいと思います。まずはご自身なりにやってみたコードとエラーメッセージをご提示ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問