예제 #1
0
    def test_is_visible(self):

        _sphere = hom.CMDS.polySphere()
        _grp1 = hom.CMDS.group()
        _grp2 = _grp1.duplicate()
        _sphere1 = hom.HFnMesh(
            get_single(
                _grp1.list_relatives(allDescendents=True,
                                     path=True,
                                     type='transform')))
        _sphere2 = hom.HFnMesh(
            get_single(
                _grp2.list_relatives(allDescendents=True,
                                     path=True,
                                     type='transform')))
        _sphere2.hide()
        assert is_visible(_sphere1.shp)
        assert not is_visible(_sphere2.shp)
예제 #2
0
    def find_meshes(self):
        """Find meshes in this reference.

        Returns:
            (HFnMesh list): meshes
        """
        from maya_psyhive import open_maya as hom
        _meshes = []
        for _shp in self.find_nodes(type_='mesh'):
            if _shp.plug('intermediateObject').get_val():
                continue
            _mesh = hom.HFnMesh(get_parent(_shp))
            _meshes.append(_mesh)
        return _meshes
예제 #3
0
    def find_meshes(self):
        """Find meshes in the current scene.

        Returns:
            (HFnMesh list): meshes
        """
        _meshes = []
        for _shp in hom.CMDS.ls(type='mesh'):
            if _shp.namespace:
                continue
            if _shp.plug('intermediateObject').get_val():
                continue
            _mesh = hom.HFnMesh(get_parent(_shp))
            _meshes.append(_mesh)
        return _meshes
예제 #4
0
    def test_shade_geo_from_rig(self):

        _path = (_DEV_PROJ.path + '/assets/3D/character/archer/'
                 'rig/output/rig/rig_main/v016/maya/archer_rig_main_v016.mb')
        _ref = ref.obtain_ref(file_=_path, namespace='archer_test')
        _ref.get_node('placer_Ctrl', class_=hom.HFnTransform).tz.set_val(10)
        _bbox = _ref.get_node('hairStrand_04_Geo', class_=hom.HFnMesh).bbox()
        _cache_set = nt.ObjectSet(_ref.get_node('bakeSet'))
        _n_refs = len(ref.find_refs())
        del_namespace(':tmp_archer_test')
        tank_support.drive_shade_geo_from_rig(_cache_set, verbose=1)
        assert len(ref.find_refs()) == _n_refs
        _geo = hom.HFnMesh('tmp_archer_test:hairStrand_04_Geo')
        assert _geo.bbox().min == _bbox.min
        assert _geo.bbox().max == _bbox.max
예제 #5
0
def read_mesh_data(verbose=0):
    """Read mesh data from current scene.

    Args:
        verbose (int): print process data

    Returns:
        (dict): mesh data
    """

    # Get list of meshes
    if cmds.objExists('bakeSet'):
        _meshes = []
        for _node in cmds.sets('bakeSet', query=True):
            try:
                _meshes.append(hom.HFnMesh(_node))
            except RuntimeError:
                continue
    else:
        _meshes = hom.find_nodes(class_=hom.HFnMesh)

    # Read mesh data
    _data = {}
    for _mesh in _meshes:

        if _mesh.isFromReferencedFile:
            continue

        _uv_sets = [str(_set) for _set in _mesh.getUVSetNames()]

        lprint('MESH', _mesh, _mesh.shp, _mesh.shp.typeName, verbose=verbose)
        lprint(' - NUM VTXS', _mesh.numVertices, verbose=verbose)
        lprint(' - UV SETS', _mesh.numUVSets, _uv_sets, verbose=verbose)

        _mesh_data = {}
        _mesh_data['uv_sets'] = _uv_sets
        _mesh_data['vtx_count'] = _mesh.numVertices
        _mesh_data['poly_count'] = _mesh.numPolygons
        _data[str(_mesh)] = _mesh_data

    return _data