頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


SceneKitで点を描く

SceneKitで直線を描く
↑この続きというか関連記事。
直線の次は点を描く。
+(SCNNode *)makeDotsNodeForSCNVectors:(SCNVector3 *)positions nofDots:(NSUInteger)nofDots dotRadius:(float)dotRadius
{
    SCNGeometrySource *vertexSource = [SCNGeometrySource geometrySourceWithVertices:positions count:nofDots];
    SCNGeometryElement *element = [SCNGeometryElement geometryElementWithData:nil primitiveType:SCNGeometryPrimitiveTypePoint primitiveCount:nofDots bytesPerIndex:0];
    
    element.pointSize = 2.0*dotRadius;//—(1)
    element.minimumPointScreenSpaceRadius = dotRadius;//—(2)
    element.maximumPointScreenSpaceRadius = dotRadius;//—(3)
    
    SCNGeometry *dots = [SCNGeometry geometryWithSources:@[vertexSource] elements:@[element]];
    
    SCNNode *dotsNode = [SCNNode nodeWithGeometry:dots];
    return dotsNode;
}

{
    //呼び出す側
    SCNVector3 positions[] = { SCNVector3Make(-3.0 , 3.0 , 0.0) , SCNVector3Make(3.0 , 3.0 , 0.0) };
    SCNNode *dotsNode = [MyUtility makeDotsNodeForSCNVectors:positions nofDots:2 dotRadius:30.0];
    dotsNode.geometry.firstMaterial.diffuse.contents = [UIColor whiteColor];
}
↑elementを作るときのデータにnilを渡し、bytesPerIndexも0にしてる。なぜこれで動くんだという感じだが、、、まあ、座標も個数もわかってるから描けるじゃん、と言えば描けるんだが。
前記事の直線の場合と違って点の場合は大きさを指定できる、というかmin…,max…などを指定しないと表示されない。全ての点を同じ大きさで表示したいので、(1)〜(3)を同じにしている。

点描画の実行結果

↑実行結果。半径30としている。
スポンサーサイト

<< ARKitのARFaceGeometryから顔の頂点を描く  TopPage  SceneKitで直線を描く >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1271-006aab77




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad