How to set active camera in Solaris viewport from Python (Solved)

   2327   3   0
User Avatar
Member
10 posts
Joined: Dec. 2018
Offline
I am trying to set the camera to view through in the viewport in a LOP net from a python script, but having trouble navigating the python reference docs. My current code is this

desktop = hou.ui.curDesktop()
viewer = desktop.paneTabOfType(hou.paneTabType.SceneViewer)
viewport = viewer.findViewport("persp1");	
viewport.setCamera(hou.node('/obj/lopnet1/camera10'))

but I get this error
TypeError: in method 'GeometryViewport_setCamera', argument 2 of type 'char const *' Additional information: Wrong number or type of arguments for overloaded function 'GeometryViewport_setCamer a'. Possible C/C++ prototypes are: HOM_GeometryViewport::setCamera(HOM_ObjNode &) HOM_GeometryViewport::setCamera(char const *)
I assume this because the camera node is of type hou.LopNode instead of a ObjNode. Any idea how I can change the viewport camera from python?
Edited by greengiant83 - Dec. 23, 2022 21:06:24
User Avatar
Member
313 posts
Joined: Oct. 2016
Offline
Have never tried but the last line look odd. I’m not at a machine. Maybe try something like: viewport.setCamera(”/obj/lopnet1/camera10”)


Now some time was given to test this, so here you go:

# code for setting a camera
def setCamera(viewport='persp1',camera_path='/stage/camera1'):
    desktop = hou.ui.curDesktop()
    viewer = desktop.paneTabOfType(hou.paneTabType.SceneViewer)
    viewport = viewer.findViewport(viewport);       
    viewport.setCamera(camera_path)


# adjust the parms/args
setCamera(viewport='persp1',camera_path='/cameras/camera1')
setCamera(viewport='persp1',camera_path='/cameras/camera2')



Cheers!
Edited by SWest - Dec. 23, 2022 06:45:51

Attachments:
swest_screen_capture_20221223_1243.mp4 (2.9 MB)

Interested in character concepts, modeling, rigging, and animation. Related tool dev with Py and VEX.
User Avatar
Staff
5261 posts
Joined: July 2005
Online
For LOPs, you don't pass a Houdini path to a node, you pass a USD primitive path of the camera you want to set:
viewport.setCamera("/cameras/camera1")
User Avatar
Member
10 posts
Joined: Dec. 2018
Offline
Awesome. Thank you!
  • Quick Links