AR コンテンツは、シーンに溶け込むように正しい配置とサイズにする必要があります。実世界の物体と同様に、遠くにある仮想オブジェクトは小さく表示される必要があります。ヒットテスト(または AR Foundation for Unity のレイキャスト)を実行すると、シーン内の 3D オブジェクトの正しい配置を判断できます。正しく配置することで、AR コンテンツが適切な(見かけの)サイズでレンダリングされます。
ヒットテストは、実世界の 3D ジオメトリと、原点と方向で構成される仮想直線との交差を検出します。デバイスのカメラを原点とする光線が最も一般的に使用されますが、ARCore には、ワールド空間座標の任意の光線を使用してヒットテストを実行するための API が含まれています。
ユーザーのデバイスのカメラから出た光線が、床、壁、物体などのシーンの 3D ジオメトリに当たるまで前方に延びるとします。この場合、ヒット結果のリスト、つまり検出されたシーン ジオメトリとの交差点が返されます。リストはデバイスからの距離の順に並べ替えられ、最も近い交差点が最初に表示されます。通常、他のオブジェクトの背後に隠れているオブジェクトは確認できないため、これは重要です。ほとんどの場合、最初の結果が最も重要な結果になります。
[null,null,["最終更新日 2025-07-26 UTC。"],[[["\u003cp\u003eARCore hit-tests, or raycasts, help you determine the correct placement and scale of virtual objects in the real world by finding intersections between a ray and the scene's geometry.\u003c/p\u003e\n"],["\u003cp\u003eHit results provide distance, pose, and trackable information, allowing you to realistically anchor 3D content.\u003c/p\u003e\n"],["\u003cp\u003eThere are four hit result types: Depth, Plane, Feature Point, and Instant Placement, each with different use cases and tradeoffs depending on the desired outcome and device capabilities.\u003c/p\u003e\n"],["\u003cp\u003eDepth hit results, available on Depth supported devices, utilize depth information for precise object placement on any surface, while Plane hit results are suitable for floors and walls.\u003c/p\u003e\n"],["\u003cp\u003eFeature Point hit results rely on visual features, and Instant Placement allows for fast content placement even with initially unknown depth and scale.\u003c/p\u003e\n"]]],[],null,["# Hit-tests place virtual objects in the real world\n\n**Platform-specific guides** \n\n### Android (Kotlin/Java)\n\n- [Developer guide](/ar/develop/java/hit-test/developer-guide)\n\n### Android NDK (C)\n\n- [Developer guide](/ar/develop/c/hit-test/developer-guide)\n\n### Unity (AR Foundation)\n\n- [Developer guide](/ar/develop/unity-arf/hit-test/developer-guide)\n\nYour browser does not support the video tag.\n\nAR content must be correctly placed and sized to blend into a scene. Like real-world objects, virtual objects that are further away should appear smaller. You can perform a **hit-test** (or a **raycast** in AR Foundation for Unity) to determine the correct placement of a 3D object in your scene. Correct placement ensures that the AR content is rendered at the appropriate (apparent) size.\n\nHit-tests find intersections between either real-world 3D geometry and a virtual ray consisting of an origin and direction. Rays with the device's camera as the origin are used most commonly, though ARCore includes an API for performing hit-tests with an arbitrary ray in world space coordinates.\n\nImagine that there is a ray originating from a user's device camera that extends forward until it hits the 3D geometry of the scene, such as a floor, wall, or object. Once this happens, you receive a list of **hit results**, or intersections with detected scene geometry. The list is sorted by distance from the device, with the nearest intersection first. This is important because generally you can't see objects occluded behind other objects, so most of the time the first result is the most significant.\n| **Note:** Hit-tests are typically performed as rays from the device or device camera, but it is possible to have an arbitrary ray origin and direction.\n\nContents of a hit result\n------------------------\n\nAn individual hit result is returned as a list with the following information for each result:\n\n- Distance from the ray origin, in meters\n- Pose (position and orientation) of the hit result\n- The 3D geometry that you hit, in the form of a Trackable\n\nYou can then use the desired hit result to [realistically place your 3D content using an Anchor](/ar/develop/anchors).\n\nHit result types\n----------------\n\nThere are four types of hit results: Depth, plane, feature point, and Instant Placement results. Each has its own use cases and tradeoffs, as shown by the following table.\n| **Note:** Depth hit results require [Depth supported devices](/ar/devices#google_play_devices). On non-Depth supported devices, Depth supported devices that do not have depth data yet or on sessions where Depth has been disabled, use plane hit results instead.\n\n| Hit result type | Description | Orientation | Use case |\n|----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Depth | Uses depth information from the entire scene to determine a point's correct depth and orientation | Perpendicular to the 3D surface | Place a virtual object on an arbitrary surface (not just on floors and walls) |\n| Plane | Hits horizontal and/or vertical surfaces to determine a point's correct depth and orientation | Perpendicular to the 3D surface | Place an object on a plane (floor or wall) using the plane's full geometry. Need correct scale immediately. Fallback for the Depth hit-test |\n| Feature point | Relies on visual features around the point of a user tap to determine a point's correct position and orientation | Perpendicular to the 3D surface | Place an object on an arbitrary surface (not just on floors and walls) |\n| Instant Placement (Persistent Raycast) | Uses screen space to place content. Initially uses estimated depth provided by the app. Works instantly, but pose and actual depth will change once ARCore is able to determine actual scene geometry | +Y pointing up, opposite to gravity | Place an object on a plane (floor or wall) using the plane's full geometry where fast placement is critical, and the experience can tolerate unknown initial depth and scale |\n\nDevice compatibility\n--------------------\n\nHit-tests work on all [ARCore supported devices](/ar/devices), but Depth hit-tests will require [Depth supported devices](/ar/devices#google_play_devices).\n\nUse hit results to place AR content\n-----------------------------------\n\nOnce you have a hit result, you can use its pose as input to [place AR content](/ar/develop/anchors) in your scene."]]