def __init__(self, scene_viewer): self.geo = hou.Geometry() self.knob_geo = hou.Geometry() self.knob_pt = self.knob_geo.createPoint() self.scene_viewer = scene_viewer self.sphere_verb = hou.sopNodeTypeCategory().nodeVerb("sphere") self.sphere_verb.setParms({'type': 2, 'rows': 32, 'cols': 32}) self.sphere_verb.execute(self.geo, []) self.circle_verb = hou.sopNodeTypeCategory().nodeVerb("circle") self.circle_verb.setParms({'type': 1, 'divs': 32}) self.circle_geo = hou.Geometry() self.circle_verb.execute(self.circle_geo, []) self.drawable = hou.GeometryDrawable( self.scene_viewer, hou.drawableGeometryType.Face, "rollerball", params={ 'style': hou.drawableGeometryFaceStyle.Plain, 'backface_culling': 1, 'color1': hou.Vector4(0.2, 0.2, 0.2, 0.5), 'fade_factor': 0.2 }) self.knob_drawable = hou.GeometryDrawable( self.scene_viewer, hou.drawableGeometryType.Point, "rollerball_knob", params={ 'style': hou.drawableGeometryPointStyle.SmoothCircle, 'color1': hou.Vector4(1.0, 1.0, 1.0, 1.0), 'radius': 6, 'fade_factor': 0.5 }) self.knob_drawable.setGeometry(self.knob_geo) self.drawable.setGeometry(self.geo) self.is_behind = False self.is_ball = True self.circle_N = hou.Vector3(0, 1, 0) self.start_transform = hou.Matrix4(1) self.start_vec = hou.Vector3() self.start_mouse_x = 0.0 self.start_mouse_y = 0.0 self.start_ray_dir = hou.Vector3(0, 0, 0) self.start_ray_origin = hou.Vector3(0, 0, 0) # vector for twist self.primary_axis = hou.Vector3(0, 0, 1) # vector for bend self.secondary_axis = hou.Vector3(1, 0, 0) self.axis = hou.Vector3(0, 0, 1)
def __init__(self, state_name, scene_viewer): self.state_name = state_name self.scene_viewer = scene_viewer self.poly_id = -1 self.cursor_text = "Text" self.geometry = None self.geometryHandles = None self.mouseStart = hou.Vector2() self.mouseXLast = -1 self.mouse_screen = hou.Vector2() self.cursorStartPos = hou.Vector3() self.dragStartValue = 0 self.handleStartPos = hou.Vector3() self.currentPoint = -1 self.currentHandleIdx = -1 self.currentPrimid = -1 self.currentPrimu = -1 self.currentPrimDist = -1 self.dragAction = False self.isHandle = False self.autoSlide = False self.slideHandlesAhead = False self.slideHandlesBehind = False self.handlePosMethod = 0 self.text = hou.TextDrawable(self.scene_viewer, "text") # Construct a geometry drawable group line = hou.GeometryDrawable(self.scene_viewer, hou.drawableGeometryType.Line, "line", params={ "color1": (0.0, 0.0, 1.0, 1.0), "style": hou.drawableGeometryLineStyle.Plain, "line_width": 3} ) face = hou.GeometryDrawable(self.scene_viewer, hou.drawableGeometryType.Face, "face", params={ "style": hou.drawableGeometryFaceStyle.Plain, "color1": (0.0, 1.0, 0.0, 1.0)} ) point = hou.GeometryDrawable(self.scene_viewer, hou.drawableGeometryType.Point, "point", params={ "num_rings": 2, "radius": 8, "color1": (1.0, 0.0, 0.0, 1.0), "style": hou.drawableGeometryPointStyle.LinearCircle} ) self.poly_guide = hou.GeometryDrawableGroup("poly_guide") self.poly_guide.addDrawable(face) self.poly_guide.addDrawable(line) self.poly_guide.addDrawable(point)
def __init__(self, scene_viewer, color, show_text, text_scale): line = createLineGeometry() frustum = createFrustumGeometry() self.color = color self.disk_x = Measurement.disk_maker.makeDisk((1, 0, 0), (.7, .2, .2)) self.disk_y = Measurement.disk_maker.makeDisk((0, 1, 0), (.2, .7, .2)) self.disk_z = Measurement.disk_maker.makeDisk((0, 0, 1), (.2, .2, .7)) self.scene_viewer = scene_viewer self.tail_spot_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "tail_spot", frustum) self.head_spot_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "head_spot", frustum) self.line_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "line", line) self.tail_disk_drawable = None self.head_disk_drawable = None self.text_drawable = hou.TextDrawable(scene_viewer, "text_drawable") self.text_params = { 'text': None, 'translate': hou.Vector3(0.0, 0.0, 0.0), 'highlight_mode': hou.drawableHighlightMode.MatteOverGlow, 'glow_width': 10, 'color2': hou.Vector4(0, 0, 0, 0.5), 'scale': hou.Vector3(text_scale, text_scale, text_scale) } self.spot_params = { 'color1': color.getVec(), 'fade_factor': 0.5, 'highlight_mode': hou.drawableHighlightMode.MatteOverGlow, 'glow_width': 5 } self.line_params = { 'line_width': 4.0, 'style': (10.0, 5.0), 'color1': color.getVec(), 'fade_factor': 0.3, 'highlight_mode': hou.drawableHighlightMode.MatteOverGlow, 'glow_width': 5 } self.tail_pos = hou.Vector3(0.0, 0.0, 0.0) self.head_pos = hou.Vector3(0.0, 0.0, 0.0) self.spot_size = 0.01 self.measurement = 0.0 self.font_size = Measurement.default_font_size self.font_color = color.getHexStr() self.text = Measurement.default_text self.curPlane = None self.angle_snapping = False self.name = "" self.show_text = show_text self.updateTextField()
def setHeadDisk(self, plane, scene_viewer): if plane == Plane.X: self.head_disk_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "circle", self.disk_x) elif plane == Plane.Y: self.head_disk_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "circle", self.disk_y) elif plane == Plane.Z: self.head_disk_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "circle", self.disk_z) else: return
def setTailDisk(self, plane, scene_viewer, model_to_camera, camera_to_ndc): if plane == Plane.X: self.tail_disk_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "circle", self.disk_x) if plane == Plane.Y: self.tail_disk_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "circle", self.disk_y) if plane == Plane.Z: self.tail_disk_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Line, "circle", self.disk_z) self.setDiskTransform(self.tail_disk_drawable, self.tail_pos, model_to_camera, camera_to_ndc)
def makeGeometryDrawableGroup(sceneviewer, groupname): # Construct a geometry drawable group line = hou.GeometryDrawable(sceneviewer, hou.drawableGeometryType.Line, "line", params={ "color1": (0.0, 0.0, 1.0, 1.0), "style": hou.drawableGeometryLineStyle.Plain, "line_width": 3 }) face = hou.GeometryDrawable(sceneviewer, hou.drawableGeometryType.Face, "face", params={ "style": hou.drawableGeometryFaceStyle.Plain, "color1": (0.0, 1.0, 0.0, 1.0) }) point = hou.GeometryDrawable( sceneviewer, hou.drawableGeometryType.Point, "point", params={ "num_rings": 2, "radius": 10, "color1": (1.0, 0.0, 0.0, 1.0), "style": hou.drawableGeometryPointStyle.LinearCircle }) groupgeo = hou.GeometryDrawableGroup(groupname) groupgeo.addDrawable(face) groupgeo.addDrawable(line) groupgeo.addDrawable(point) return groupgeo
def __init__(self, state_name, scene_viewer): self.state_name = state_name self.scene_viewer = scene_viewer self.geometry_viewport = hou.SceneViewer.curViewport(self.scene_viewer) self.geo_intersector = None self.geometry = None self.measurements = MeasurementContainer(self.geometry_viewport, State.text_size) self.current_node = None self.curPlane = None self.show(False) self.angle_snapping = False self.cur_angle = 0 point = createPointGeometry() self.point_drawable = hou.GeometryDrawable( scene_viewer, hou.drawableGeometryType.Point, "point", point) self.point_params = { 'style': hou.drawableGeometryPointStyle.SmoothCircle, 'radius': 2, 'color2': hou.Vector4(0, 1, 1, 1), 'color1': hou.Vector4(.9, .8, .1, 1.), 'highlight_mode': hou.drawableHighlightMode.MatteOverGlow, 'glow_width': 20 } self.active = False self.angle_text_drawable = hou.TextDrawable(self.scene_viewer, "angle_text") self.angle_text_params = { 'text': "Fizz", 'translate': hou.Vector3(0.0, 0.0, 0.0), 'highlight_mode': hou.drawableHighlightMode.MatteOverGlow, 'glow_width': 10, 'color2': hou.Vector4(0, 0, 0, 0.5) } self.arc_drawable = hou.GeometryDrawable(self.scene_viewer, hou.drawableGeometryType.Line, "arc") self.mode = Mode.doing_nothing
def __init__(self, sceneviewer): self.scene_viewer = sceneviewer self.knob_geo = hou.Geometry() self.knob_pt = self.knob_geo.createPoint() self.knob_drawable = hou.GeometryDrawable( self.scene_viewer, hou.drawableGeometryType.Point, "highlighter_knob", params={ 'style': hou.drawableGeometryPointStyle.SmoothCircle, 'color1': hou.Vector4(1.0, 1.0, 1.0, 1.0), 'radius': 8, 'fade_factor': 0.5 }) self.knob_drawable.setGeometry(self.knob_geo) self.show(False)