renato.semadeni Posted January 13, 2015 Posted January 13, 2015 Hi there For the Unigine v1, we used the following code to get the height above terrain (HAT) and pack it into the CigiHatHotExtResponse packet. int ret[0]; dvec3 p0 = position + vec3(0.0f,0.0f,1000.0f); dvec3 p1 = position - vec3(0.0f,0.0f,1000.0f); Object object = engine.world.getIntersection(p0,p1,~0,ret); CigiHatHotExtResponse response = new CigiHatHotExtResponse(hathot_id); if(object != NULL) { dvec3 point = ret[0]; vec3 normal = ret[1]; response.setResponseValid(1); response.setHeightAbove(position.z - point.z); response.setHeightOf(point.z); response.setAzimuth(atan2(normal.x,normal.y) * RAD2DEG); response.setElevation(acos(clamp(-normal.z,-1.0f,1.0f)) * RAD2DEG - 90.0f); } engine.cigi.addIGPacket(response); In Unigine V2 there are some changes in the getIntersection* commands. We tried it as followed: int ret[0]; dvec3 p0 = position + vec3(0.0f, 0.0f, -200.0f); dvec3 p1 = position - vec3(0.0f, 0.0f, 1000.0f); int intersected = engine.world.getIntersectionObjects(p0, p1, ret); But as it seems, the returned 'ret' value doesn't contains any more the point and its normal of the ground model. As described in the documentation, the ret array contains the result. Is my approach correct? I should get the point on the ground vertically below the spectator. Thanks a lot, Renato
silent Posted January 13, 2015 Posted January 13, 2015 Hi Renato, According to the migration guide you should use this function instead: getIntersection(p0, p1, int mask, variable v). Variable v will define the results that function returns. For example: WorldIntersectionNormal intersection = new WorldIntersectionNormal(); dvec3 p0 = position + vec3(0.0f,0.0f,1000.0f); dvec3 p1 = position - vec3(0.0f,0.0f,1000.0f); Object object = engine.world.getIntersection(p0,p1,~0,ret); if(object != NULL) { log.message("point: %s index: %i surface: %i normal: %s \n", typeinfo(intersection.getPoint()), intersection.getIndex(), intersection.getSurface(), typeinfo(intersection.getNormal())); } Thanks! How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN
renato.semadeni Posted January 13, 2015 Author Posted January 13, 2015 Hi Andrey Sorry, I couldn't have thought of the migration guide! Thanks a lot.
renato.semadeni Posted January 13, 2015 Author Posted January 13, 2015 Hi Andrey I came across the following situation while using the getIntersection function with a WorldIntersectionNormal object. The z-value of the intersection point increase or decrease to the same amount as the change of the object in the middle of the reference line. Does the WorldIntersectionNormal object doesn't contain the intersection point coordinates relative to the world pivot point? Hope, you understand what I mean, Renato
renato.semadeni Posted January 13, 2015 Author Posted January 13, 2015 What I mean is, that I want to find out the HOT (height-of-terrain) of the terrain below a specific point...
renato.semadeni Posted January 13, 2015 Author Posted January 13, 2015 Hi Andrey, I've found the problem. If I had to change the definition of p0 to remain the Aircraft's position and not 1000m above, as shown below. dvec3 p0 = position; The WorldIntersectionNormal object returns the HOT correctly. This is the code I'm using right now: WorldIntersectionNormal intersection = new WorldIntersectionNormal(); dvec3 p0 = position; dvec3 p1 = position - vec3(0.0f, 0.0f, 2000.0f); Object object = engine.world.getIntersection(p0, p1, ~0, intersection); dvec3 point = intersection.getPoint(); vec3 normal = intersection.getNormal(); response.setResponseValid(1); response.setHeightAbove(position.z - point.z); response.setHeightOf(point.z); ... engine.cigi.addIGPacket(response); Kind regards, Renato
silent Posted January 13, 2015 Posted January 13, 2015 Great! The issue is solved for now? How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN
renato.semadeni Posted January 13, 2015 Author Posted January 13, 2015 Yes, solved for now. Thanks a lot!
Recommended Posts