sig
  type t
  external create' : unit -> OsgUtil.Simplifier.t = "simplifier_create"
  external to_node_visitor : OsgUtil.Simplifier.t -> Osg.Node_visitor.t
    = "simplifier_to_node_visitor"
  external simplify : OsgUtil.Simplifier.t -> Osg.Geometry.t -> unit
    = "simplifier_simplify"
  external set_sample_ratio : OsgUtil.Simplifier.t -> float -> unit
    = "simplifier_set_sample_ratio"
  external set_maximum_error : OsgUtil.Simplifier.t -> float -> unit
    = "simplifier_set_maximum_error"
  external set_maximum_length : OsgUtil.Simplifier.t -> float -> unit
    = "simplifier_set_maximum_length"
  external set_do_tri_strip : OsgUtil.Simplifier.t -> bool -> unit
    = "simplifier_set_do_tri_strip"
  external set_smoothing : OsgUtil.Simplifier.t -> bool -> unit
    = "simplifier_set_smoothing"
  val create_internal :
    (OsgUtil.Simplifier.t -> 'a) ->
    ?sample_ratio:float ->
    ?maximum_error:float ->
    ?maximum_length:float ->
    ?do_tri_strip:bool -> ?smoothing:bool -> unit -> 'a
  val create :
    ?sample_ratio:float ->
    ?maximum_error:float ->
    ?maximum_length:float ->
    ?do_tri_strip:bool -> ?smoothing:bool -> unit -> Osg.Node_visitor.t
  val labl_create :
    ?sample_ratio:float ->
    ?maximum_error:float ->
    ?maximum_length:float ->
    ?do_tri_strip:bool -> ?smoothing:bool -> unit -> OsgUtil.Simplifier.t
end