rotate 360 image photo from metadata (roll, ptch yawn) or (omega, phy and kappa)

hello everyone, I’m working on a project that uses 360 images similar to what google street view does, I apply the images as a texture to a sphere and I would like to be able to rotate this sphere based on the values I have available for each image such as (roll, ptch yawn) or (omega, phy and kappa) but the problem is that I can’t even understand these values because they seem to give me values that cannot be simple rotations in degrees, given that even for of apparently upright images, we have very high rotation values.
I give an example by reporting an image and its relative values (roll, ptch yawn) and (omega, phy and kappa)

“Id”: 1,
“X”: “8.9224241324057”,
“Y”: “44.4173777460983”,
“Timestamp”: “117421.6218539999972563”,
“Direction_”: “-0.13586500000”,
“Northing”: “0.858954615 0.4599651905”,
“Height_”: “0.4599651905 -0.49628”,
“Up_Easting”: “0.09561430000”,
“Roll_X_deg”: “-8.31972000000”,
“Pitch_Y_de”: “14.01900000000”,
“Yaw_Z_deg_”: “118.1734452609999835”,
“Omega_deg_”: “-42.7251519049000024”,
“Phi_deg_”: “9.51611000000”,
“Kappa_deg_”: “-106.2545168710000070”,
“ELEVATION”: “7.39000000000”,
“Filename”: “Job 014- Setup 001.jpg”

Thanks everyone, any advice is welcome!

Can you refer to the docs from where you got the data? It seems slightly odd to expect others to know the source of the data and to what it refers. This isn’t a Unity or Scripting question really but more a question for the General Discussion sub-forum.

Anyway, I did a google search and this was one of the first results. Maybe it’s relevant and will help: Yaw, Pitch, Roll and Omega, Phi, Kappa angles

NOTE: It’s “yaw” not “yawn”. :slight_smile:

1 Like

actually thinking about it, it’s not the right section for this discussion XD, however the problem is that I don’t have a reference document for this data, I only have a CSV with a very long list of images and for each of them the values (roll, pitch yan ) and (omega, phy and kappa). but I have no idea how I could convert these values into effective rotations to apply to my sphere, to make sure that the images are oriented correctly.

seems like some laser scanner image data,
so if you can find out the model, probably can get more info from docs…

does the image file meta data (properties) contain any device names?

nope, the only thing that I have is that document

now I’m trying to rotate the sphere containing the 360 photo by assigning the degrees of rotation of the yaw value, but if for some photos it seems to work, for others it doesn’t, furthermore on apparently straight photos, there are unexplainable rotation values in degrees

private void EvalRotation(){
        Debug.Log("Corrente: " + corrente.pointData.ToString());
        Debug.Log("Prossima: " + prossima.pointData.ToString());
        Debug.Log("Roll_x_deg_ " + corrente.pointData.Yaw_Z_deg_);
        roll1 = ((float)double.Parse(corrente.pointData.Roll_X_deg,CultureInfo.InvariantCulture));
        omega1 = ((float)double.Parse(corrente.pointData.Omega_deg_,CultureInfo.InvariantCulture));
        omega2 = ((float)double.Parse(prossima.pointData.Roll_X_deg,CultureInfo.InvariantCulture));
        pitch1 = ((float)double.Parse(corrente.pointData.Pitch_Y_de,CultureInfo.InvariantCulture));
        phi1 = ((float)double.Parse(corrente.pointData.Phi_deg_,CultureInfo.InvariantCulture));
        phi2 = ((float)double.Parse(prossima.pointData.Phi_deg_,CultureInfo.InvariantCulture));
        yaw1 = ((float)double.Parse(corrente.pointData.Yaw_Z_deg_,CultureInfo.InvariantCulture));
        yaw2 = ((float)double.Parse(prossima.pointData.Yaw_Z_deg_,CultureInfo.InvariantCulture));
        kappa1 = ((float)double.Parse(corrente.pointData.Kappa_deg_,CultureInfo.InvariantCulture));
        kappa2 = ((float)double.Parse(prossima.pointData.Yaw_Z_deg_,CultureInfo.InvariantCulture));
    }

private void SetRotation(){

        if (applyKappaPhi){
            Debug.Log("yaw prima " + yaw1);
            Debug.Log("yaw successiva " + yaw2);

            sferaA.rotation = Quaternion.Euler((0),(yaw1+75),(0));
            sferaB.rotation = Quaternion.Euler((0),(yaw2+75),(0));
            //sferaB.rotation = Quaternion.Euler((omega2 * Mathf.Deg2Rad),(phi2 * Mathf.Deg2Rad), (kappa2 * Mathf.Deg2Rad));
        }
    }