API های Streetscape Geometry هندسه زمین، ساختمان ها یا سایر سازه ها را در یک صحنه ارائه می دهند. هندسه را می توان برای انسداد، رندر یا قرار دادن محتوای واقعیت افزوده از طریق APIهای تست ضربه استفاده کرد. دادههای Streetscape Geometry از طریق تصاویر نمای خیابان Google به دست میآیند.
نمونه را امتحان کنید
برنامه GeospatialExample نحوه به دست آوردن و رندر کردن Streetscape Geometries را نشان می دهد.
Geospatial API را تنظیم کنید
برای استفاده از Streetscape Geometry، باید Geospatial API را در پروژه خود راه اندازی کنید. دستورالعملهای فعال کردن Geospatial API برای راهاندازی Geospatial API را دنبال کنید.
هندسه Streetscape را فعال کنید
Geospatial API زمانی که GARGeospatialMode
روی GARGeospatialModeEnabled
و GARStreetscapeGeometryMode
روی GARStreetscapeGeometryModeEnabled
تنظیم شده باشد، داده های Streetscape Geometry را به دست می آورد.
GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];
هندسه Streetscape را در جلسه ARCore بدست آورید
ازGARFrame.streetscapeGeometries
برای به دست آوردن تمام اشیاء GARStreetscapeGeometry
استفاده کنید. GARStreetscapeGeometry
درک کنید
GARStreetscapeGeometry
حاوی اطلاعاتی در مورد یک ساختمان است:
-
GARStreetscapeGeometry.type
StreetscapeGeometry را به عنوان زمین یا ساختمان شناسایی می کند. -
GARStreetscapeGeometry.mesh
یک چند ضلعیGARMesh
که با این زمین یا ساختمان مطابقت دارد به دست آورید. -
GARStreetscapeGeometry.meshTransform
منشا هندسه را شرح می دهد. همه نقاط درGARMesh
باید توسطGARStreetscapeGeometry.meshTransform
تبدیل شوند. -
GARStreetscapeGeometry.quality
کیفیت داده های مش را ارائه می دهد. سطوح جزئیات در استاندارد CityGML 2.0 توضیح داده شده است.
LOD ساختمان 1
GARStreetscapeGeometryQualityBuildingLOD_1
شامل ردپاهای ساختمانی است که به سمت بالا به سمت بالا صاف می شوند. ارتفاع ساختمان ممکن است نادرست باشد.
ساختمان LOD 2
GARStreetscapeGeometryQualityBuildingLOD_2
هندسه وفاداری بالاتری خواهد داشت. دیوارها و سقف های مشبک بیشتر با شکل ساختمان مطابقت دارند. ویژگیهای کوچکتر مانند دودکشها یا دریچههای سقف ممکن است همچنان در خارج از مش قرار بگیرند.
GARMesh
درک کنید
GARMesh
یک شبکه چند ضلعی است که نمایانگر بازسازی سطحی از هندسه Streetscape است. هر GARMesh
شامل یک بافر رأس و بافر شاخص است:
-
GARMesh.vertexCount
تعداد رئوس این مش را بازیابی می کند. -
GARMesh.vertices
موقعیت های به هم پیوسته رئوس مش را در مختصات نسبت بهGARStreetscapeGeometry.meshTransform
بدست آورید. -
GARMesh.triangleCount
تعداد شاخص های این مش را بازیابی می کند. -
GARMesh.triangles
شاخص های رئوس تشکیل دهنده یک صورت را به دست آورید.
محتوای AR را به GARStreetscapeGeometry
متصل کنید
از GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
برای ایجاد یک لنگر در یک حالت مشخص در نزدیکی GARStreetscapeGeometry.meshTransform
استفاده کنید. این لنگر وضعیت ردیابی خود را از GARStreetscapeGeometry
والد به ارث می برد. یک تست آماری در برابر GARStreetscapeGeometry
انجام دهید
GARSession.raycastStreetscapeGeometry:direction:error:
می تواند برای تست ضربه در برابر Streetscape Geometry استفاده شود. اگر تقاطعهایی پیدا شد، GARStreetscapeGeometryRaycastResult
حاوی اطلاعات پوزیشن در مورد مکان ضربه و همچنین ارجاعی به GARStreetscapeGeometry
است. این Streetscape Geometry را می توان به GARSesssion.createAnchorOnStreetscapeGeometry:transform:error:
تا یک لنگر متصل به آن ایجاد کند.
NSArray<GARStreetscapeGeometryRaycastResult *> *results =
[session raycastStreetscapeGeometry:arRaycastQuery.origin
direction:arRaycastQuery.direction
error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
transform:results[0].worldTransform
error:&error];