Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/07/2010, à 15:58

kikislater

Plugin python VTK pour Blender

Bonjour,


J'avais posté dans la rubrique Graphisme mais comme je n'ai pas de réponse et que c'est un script développé en python, je reposte ici. Soyez indulgent svp, merci.

Une âme charitable pourrait-elle m'aider ce utiliser ce script python permettant de convertir un fichier VTK en mesh Blender.
Les indications sont sur cette page :
http://www.ualberta.ca/CNS/RESEARCH/Vis/VTKBlender/index.html

J'ai mis VTKBlender.py dans ~/.blender/scripts, et j'y ai ajouté ça :

VTK_ROOT = /usr/local/lib/python2.6/dist-packages
LIBRARY_OUTPUT_PATH = /usr/local/lib/python2.6/dist-packages
PATH_TO_VTKBlender_MODULE = ~/.blender/scripts
import sys
sys.path.append($VTK_ROOT)
sys.path.append(${LIBRARY_OUTPUT_PATH})
sys.path.append(${PATH_TO_VTKBlender_MODULE})
Mais sans succès !


D'avance merci

Hors ligne

#2 Le 27/07/2010, à 16:04

jde3

Re : Plugin python VTK pour Blender

Je connais pas ce script, mais en python, pour faire référence à une variable, on ne la précède pas de $. De plus, il est de coutume de faire les imports avant de commencer le code. Ton code deviendrait donc :

import sys
VTK_ROOT = "/usr/local/lib/python2.6/dist-packages"
LIBRARY_OUTPUT_PATH = "/usr/local/lib/python2.6/dist-packages"
PATH_TO_VTKBlender_MODULE = "~/.blender/scripts"
sys.path.append(VTK_ROOT)
sys.path.append(LIBRARY_OUTPUT_PATH)
sys.path.append(PATH_TO_VTKBlender_MODULE)

Dernière modification par jde3 (Le 27/07/2010, à 16:05)

Hors ligne

#3 Le 27/07/2010, à 16:13

kikislater

Re : Plugin python VTK pour Blender

Merci pour les indications. En fait il n'y a pas de problème de variables environnement.
Le wrapper vtk est reconnu et utilisé par Blender et python correctement.

En effet, j'arrive à lancer ce script dans et hors Blender :

#!/usr/bin/env python

import vtk

try:
    import Blender
    from Blender import Mesh, Object, Material, Scene
    import VTKBlender
    reload(VTKBlender)
    inside_blender=1
except:
    inside_blender=0

def main():

    lut = vtk.vtkLookupTable()
    lut.SetNumberOfColors(30)
    lut.SetHueRange(0.667,0.0);
    lut.Build()

    if (inside_blender):

        me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetExtrudedLine(), lut))
        AddMesh(me)
        me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetLine(), lut))
        AddMesh(me)
        me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetPolyLine(), lut))
        AddMesh(me)
        me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetPoints(), lut))
        AddMesh(me)
        me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetCube(), lut))
        AddMesh(me)
        me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetCylinder(), lut))
        AddMesh(me)

        me = Mesh.Get("Cube")
        VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetVisQuad(), lut), me)
        me.update()
        Blender.Redraw()

    else:
        VtkInit()
        VtkAddMapper(GetBasicMapper(GetExtrudedLine(), lut))
        VtkAddMapper(GetBasicMapper(GetLine(), lut))
        VtkAddMapper(GetBasicMapper(GetPolyLine(), lut))
        VtkAddMapper(GetBasicMapper(GetPoints(), lut))
        VtkAddMapper(GetBasicMapper(GetCube(), lut))
        VtkAddMapper(GetBasicMapper(GetCylinder(), lut))
        VtkAddMapper(GetBasicMapper(GetVisQuad(), lut))
        VtkInteract()

def AddMesh(me):
    sc = Scene.GetCurrent()
    ob = Object.New('Mesh')
    ob.link(me)
    sc.objects.link(ob)
   

def GetBasicMapper(ob, lut):
    obMapper = vtk.vtkPolyDataMapper()
    obMapper.SetInput(ob)
    obMapper.SetLookupTable(lut)

    return obMapper

####################### VTK Render Stuff ###################

def VtkAddMapper(obMapper):
    global ren
    obActor = vtk.vtkActor()
    obActor.SetMapper(obMapper)
    ren.AddActor(obActor)

def VtkInit():
    global ren, iren, renWin

    ren = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren)
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)

    ren.SetBackground(0.1, 0.2, 0.4)
    renWin.SetSize(200, 200)

    iren.Initialize()

def VtkInteract():
    global renWin, iren
    renWin.Render()

    # Start the event loop.
    iren.Start()

####################### Some PolyData Objects ###################

def GetVisQuad():
    quadric = vtk.vtkQuadric()
    quadric.SetCoefficients(.5, 1, .2, 0, .1, 0, 0, .2, 0, 0)

    sample = vtk.vtkSampleFunction()
    sample.SetSampleDimensions(30, 30, 30)
    sample.SetImplicitFunction(quadric)

    contours = vtk.vtkContourFilter()
    contours.SetInput(sample.GetOutput())
    contours.GenerateValues(5, 0.0, 1.2)

    return contours.GetOutput()
   
def GetCylinder():
    ob = vtk.vtkCylinderSource()
    ob.SetResolution(8)
    ob.SetCenter(4,0,5)

    return ob.GetOutput()

def GetCube():
    ob = vtk.vtkCubeSource()
    ob.SetCenter(6,3,0)
    return ob.GetOutput()

def GetExtrudedLine():
    ob = vtk.vtkLineSource()

    ob.SetPoint1(3, 2, 1)
    ob.SetPoint2(1, 1, 1)
    ob.SetResolution(8)

    tube = vtk.vtkTubeFilter()
    tube.SetInput(ob.GetOutput())
    tube.SetRadius(0.2)
    tube.SetNumberOfSides(6)

    return tube.GetOutput()

def GetPolyLine():
    ob = vtk.vtkLineSource()

    ob.SetPoint1(2, 2, 3)
    ob.SetPoint2(1, 4, 1)
    ob.SetResolution(8)

    return ob.GetOutput()
   
def GetLine():
    ob = vtk.vtkLineSource()

    ob.SetPoint1(1, 3, 2)
    ob.SetPoint2(-1, 1, 1)
    ob.SetResolution(1)

    return ob.GetOutput()

def GetPoints():
    ob = vtk.vtkPointSource()

    ob.SetNumberOfPoints(100)
    ob.SetCenter(-3, 3, 3)
    ob.SetRadius(3)

    return ob.GetOutput()

main()

Le script ci-dessus importe les VTK de démos dans Blender.
Comment faire maintenant pour intégrer mes propres VTK et non pas ceux de démo ?

D'avance merci.

J'ai eu plus de réponse ici :
http://blenderclan.tuxfamily.org/html/modules/newbb/viewtopic.php?topic_id=26768&forum=2

Hors ligne

#4 Le 04/08/2010, à 08:53

kikislater

Re : Plugin python VTK pour Blender

up !
On sait jamais s'il y en a qui ont des idées ...

Hors ligne