mirror of
https://github.com/nerfstudio-project/nerfstudio.git
synced 2026-11-14 03:44:02 +08:00
Fix viewer meshing options (#1846)
This commit is contained in:
1 parent
2da4eee9fb
commit
a2beb63a0d
7 files changed
+66
-44
No files matched your search
@@ -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;
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"""
|
||||
Reference in new issue
Block a user