- Home /
Question by
ludomitch198 · May 23, 2020 at 02:12 PM ·
camerarendererocclusionfieldofviewfield of view
Visual area occupied by each object in field of view
Bizarre use case: I would like to be able to get, for each object within an agent's visual field, the % of the visual field that the object occupies.
Based on the answers to this question, I managed to get all the objects within an agent's visual field. I have provided the code below. Now I need to find out how much of the visual field, each of those objects occupies.
I'm rather new to unity and C# and have absolutely no idea where to begin. Any help would be much appreciated! I have also provided an image below to aid explanation.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MLAgents;
using MLAgents.Sensors;
using UnityEngineExtensions;
public class FovObjects : MonoBehaviour
{
public Camera cam;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
string allVisibleObjects = "";
foreach (GameObject go in GameObject.FindGameObjectsWithTag("arena"))
{
Transform[] allChildren = go.GetComponentsInChildren<Transform>();
foreach (Transform child in allChildren) {
Vector3 screenPoint = cam.WorldToViewportPoint(child.position);
bool onScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;
if(onScreen) {
allObjects += child.name + "-";
}
}
Debug.Log(allVisibleObjects);
}
}
}
This is just for demonstration purposes. The % aren't accurate.
screenshot-2020-04-13-at-201107-copy.png
(300.3 kB)
Comment