Spaces:
Runtime error
Runtime error
import streamlit as st | |
import tensorflow as tf | |
import numpy as np | |
def get_translation_t(t): | |
"""Get the translation matrix for movement in t.""" | |
matrix = [ | |
[1, 0, 0, 0], | |
[0, 1, 0, 0], | |
[0, 0, 1, t], | |
[0, 0, 0, 1], | |
] | |
return tf.convert_to_tensor(matrix, dtype=tf.float32) | |
def get_rotation_phi(phi): | |
"""Get the rotation matrix for movement in phi.""" | |
matrix = [ | |
[1, 0, 0, 0], | |
[0, tf.cos(phi), -tf.sin(phi), 0], | |
[0, tf.sin(phi), tf.cos(phi), 0], | |
[0, 0, 0, 1], | |
] | |
return tf.convert_to_tensor(matrix, dtype=tf.float32) | |
def get_rotation_theta(theta): | |
"""Get the rotation matrix for movement in theta.""" | |
matrix = [ | |
[tf.cos(theta), 0, -tf.sin(theta), 0], | |
[0, 1, 0, 0], | |
[tf.sin(theta), 0, tf.cos(theta), 0], | |
[0, 0, 0, 1], | |
] | |
return tf.convert_to_tensor(matrix, dtype=tf.float32) | |
def pose_spherical(theta, phi, t): | |
""" | |
Get the camera to world matrix for the corresponding theta, phi | |
and t. | |
""" | |
c2w = get_translation_t(t) | |
c2w = get_rotation_phi(phi / 180.0 * np.pi) @ c2w | |
c2w = get_rotation_theta(theta / 180.0 * np.pi) @ c2w | |
c2w = np.array([[-1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]]) @ c2w | |
return c2w | |