Fix viewer meshing options (#1846)

This commit is contained in:
Matthew Tancik authored and GitHub committed 2023-05-01 10:04:58 -07:00
1 parent 2da4eee9fb
commit a2beb63a0d
7 files changed
+66 -44

No files matched your search

+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "viewer",
"homepage": ".",
"version": "23-04-18-0",
"version": "23-05-01-0",
"private": true,
"dependencies": {
"@emotion/react": "^11.10.4",
@@ -93,4 +93,4 @@
"resolve-url-loader": "^5.0.0",
"yaml": "^2.2.2"
}
}
}
@@ -1,123 +1,110 @@
// AUTOMATICALLY GENERATED message interfaces, from Python dataclass definitions.
// This file should not be manually modified.
interface BackgroundImageMessage {
type: 'BackgroundImageMessage';
type: "BackgroundImageMessage";
media_type: 'image/jpeg' | 'image/png';
base64_data: string;
}
interface GuiAddMessage {
type: 'GuiAddMessage';
type: "GuiAddMessage";
name: string;
folder_labels: [string];
folder_labels: string[];
leva_conf: any;
}
interface GuiRemoveMessage {
type: 'GuiRemoveMessage';
type: "GuiRemoveMessage";
name: string;
}
interface GuiUpdateMessage {
type: 'GuiUpdateMessage';
type: "GuiUpdateMessage";
name: string;
value: any;
}
interface GuiSetHiddenMessage {
type: 'GuiSetHiddenMessage';
type: "GuiSetHiddenMessage";
name: string;
hidden: boolean;
}
interface GuiSetValueMessage {
type: 'GuiSetValueMessage';
type: "GuiSetValueMessage";
name: string;
value: any;
}
interface GuiSetLevaConfMessage {
type: 'GuiSetLevaConfMessage';
type: "GuiSetLevaConfMessage";
name: string;
leva_conf: any;
}
interface FilePathInfoMessage {
type: 'FilePathInfoMessage';
type: "FilePathInfoMessage";
config_base_dir: string;
data_base_dir: string;
export_path_name: string;
}
interface CameraMessage {
type: 'CameraMessage';
type: "CameraMessage";
aspect: number;
render_aspect: number;
fov: number;
matrix: [
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
];
matrix: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];
camera_type: 'perspective' | 'fisheye' | 'equirectangular';
is_moving: boolean;
timestamp: number;
}
interface SceneBoxMessage {
type: 'SceneBoxMessage';
type: "SceneBoxMessage";
min: [number, number, number];
max: [number, number, number];
}
interface DatasetImageMessage {
type: 'DatasetImageMessage';
type: "DatasetImageMessage";
idx: string;
json: any;
}
interface TrainingStateMessage {
type: 'TrainingStateMessage';
type: "TrainingStateMessage";
training_state: 'training' | 'paused' | 'completed';
}
interface CameraPathPayloadMessage {
type: 'CameraPathPayloadMessage';
type: "CameraPathPayloadMessage";
camera_path_filename: string;
camera_path: any;
}
interface CameraPathOptionsRequest {
type: 'CameraPathOptionsRequest';
type: "CameraPathOptionsRequest";
}
interface CameraPathsMessage {
type: 'CameraPathsMessage';
type: "CameraPathsMessage";
payload: any;
}
interface CropParamsMessage {
type: 'CropParamsMessage';
type: "CropParamsMessage";
crop_enabled: boolean;
crop_bg_color: [number, number, number];
crop_center: [number, number, number];
crop_scale: [number, number, number];
}
interface StatusMessage {
type: 'StatusMessage';
type: "StatusMessage";
eval_res: string;
step: number;
}
interface SaveCheckpointMessage {
type: 'SaveCheckpointMessage';
type: "SaveCheckpointMessage";
}
interface UseTimeConditioningMessage {
type: 'UseTimeConditioningMessage';
type: "UseTimeConditioningMessage";
}
interface TimeConditionMessage {
type: 'TimeConditionMessage';
type: "TimeConditionMessage";
time: number;
}
interface OutputOptionsMessage {
type: "OutputOptionsMessage";
options: any;
}
export type Message =
export type Message =
| BackgroundImageMessage
| GuiAddMessage
| GuiRemoveMessage
@@ -137,4 +124,5 @@ export type Message =
| StatusMessage
| SaveCheckpointMessage
| UseTimeConditioningMessage
| TimeConditionMessage;
| TimeConditionMessage
| OutputOptionsMessage;
@@ -276,6 +276,14 @@ function handleMessage(
});
break;
}
case 'OutputOptionsMessage': {
dispatch({
type: 'write',
path: 'renderingState/output_options',
data: message.options,
});
break;
}
default: {
console.log('Received message did not match any known types:', message);
break;
+3
View File
@@ -58,6 +58,9 @@ const initialState = {
// Time options
use_time_conditioning: false,
// Currently just used for mesh panel, should be removed
output_options: [],
},
// the scene state
sceneState: {
@@ -79,6 +79,7 @@ class RenderStateMachine(threading.Thread):
self.viewer = viewer
self.interrupt_render_flag = False
self.daemon = True
self.output_keys = {}
def action(self, action: RenderAction):
"""Takes an action and updates the state machine
@@ -227,7 +228,11 @@ class RenderStateMachine(threading.Thread):
Args:
outputs: the dictionary of outputs to choose from, from the model
"""
self.viewer.control_panel.update_output_options(list(outputs.keys()))
output_keys = set(outputs.keys())
if self.output_keys != output_keys:
self.output_keys = output_keys
self.viewer.viser_server.send_output_options_message(list(outputs.keys()))
self.viewer.control_panel.update_output_options(list(outputs.keys()))
output_render = self.viewer.control_panel.output_render
self.viewer.update_colormap_options(
+8
View File
@@ -485,6 +485,14 @@ class MessageApi(abc.ABC):
"""
self._queue(messages.StatusMessage(eval_res=eval_res, step=step))
def send_output_options_message(self, options: List[str]):
"""Send output options message
Args:
options: The list of output options
"""
self._queue(messages.OutputOptionsMessage(options=options))
def _add_gui_impl(
self,
name: str,
+10
View File
@@ -241,3 +241,13 @@ class TimeConditionMessage(NerfstudioMessage):
time: float
""" Time conditioning value """
@dataclasses.dataclass
class OutputOptionsMessage(NerfstudioMessage):
"""Output options message which are used in the export panel.
TODO: remove when export panel is becomes python defined.
"""
options: Any
""" List of output option strings"""