10 Jan 2024 |
Adrien (Iglou.eu) | In reply to @pikuakan:matrix.org Tu pourrais faire ça mister Adrien ?! houla pas du tout, je n'utilise pas la notation de point raw dans blender, j'y fait directement mes modelages | 14:29:03 |
| gil-x joined the room. | 15:43:51 |
gil-x | Salut, qu'appelles-tu "points de contrôle" ?
A priori il faudrait savoir quel type d'objet ça doit devenir sous Blender, et voir comment le générer en Python.
| 16:25:43 |
11 Jan 2024 |
| jlancey joined the room. | 09:35:43 |
@pikuakan:matrix.org | Au cas où ça pourrait dépanner qlqu'un (par ex importer un nuage de points) j'ai "découvert" qu'il suffisait d'écrire un v devant chaque point x, y, z dans un fichier .obj ;) . J'aimerai poursuivre, connaître le format utilisé pour le même fichier qui signifierait que c'est des points de contrôle de spline (nurbs, bezier ...) .
Peut être qlqu'un pourrait m'envoyer un fichier qui ne contiendrait qu'une spline créée . Je pourrai hacker le format et le reproduire ? 🤓
| 15:00:08 |
@pikuakan:matrix.org | Salut à toi . Les points de contrôle sont les quelques points 3D (x, y, z) qui permettent de générer une courbe et de contrôler sa forme . Par extension (plusieurs courbes peuvent générer un objet et/ou son maillage . | 15:05:43 |
@pikuakan:matrix.org | Merci pour ton attention . | 15:11:32 |
gil-x | Donc dans Blender un Path ? (et pas une courbe de Bézier, c'est plus complexe au niveau des contrôles) | 15:44:25 |
@pikuakan:matrix.org | Je ne sais pas trop, je suis beotien ;) Le path c pour l'anim non ? | 15:54:00 |
@pikuakan:matrix.org | mais ok si tu penses que ça peut le faire ok | 15:55:01 |
gil-x | C'est pour quel usage ? | 15:55:35 |
gil-x | Un série de point ça va donner un truc anguleux.
Si c'est un Path, y un effet d'arrondi automatique.
Mais... c'est un chemin, je ne sais pas si on peut le convertir en mesh par exemple. | 15:56:50 |
@pikuakan:matrix.org | Comme dit plus haut pour générer des objets en splines, des surfaces maillées . Non justement les splines permettent de ne pas travailler en géométrie avec des primitives mais en courbes douces et sensuelles :) | 15:58:37 |
gil-x | Ah oui, ok. Alors je pense que j'ai un bout de code qui a l'air de faire le boulot.
Tu peux me donner un petit échantillon de 3-4 points pour voir ? | 15:59:56 |
@pikuakan:matrix.org | Est ce que que tu saurais générer une simple courbe de Bézier et l'enregistrer . Probablement ça me suffirait pour comprendre le format de fichier . | 16:01:08 |
gil-x | Download test_path.blend | 16:05:30 |
gil-x | C'est fait avec un script qui a 3 points avec des coordonnées, et donc pas d'angle. Si tu as 3 valeurs par point, c'est que ça donne. | 16:06:48 |
@pikuakan:matrix.org | Download rev00.obj | 16:13:46 |
@pikuakan:matrix.org | Ok je t'explique, j'ai un petit programme (C-X11) pour décrire des objet en points de controle pour modéliser des objets symétriques en qlq sec je t'envoie ça . Chaque groupe de 4 points représente une courbe, j'ai sauté une ligne dans le fichier pour une meilleure visu . | 16:13:54 |
Adrien (Iglou.eu) | outch direct en fichier blend, il va etre en PLS a son ouverture gil-x 🤠 | 16:14:06 |
Adrien (Iglou.eu) | le V c'est pour vecteur du coup ? | 16:15:03 |
Adrien (Iglou.eu) | je pense que sans python c'est mort | 16:16:46 |
@pikuakan:matrix.org | fichier obj vs PLS ? . C comme ça que Bl les notes | 16:16:54 |
gil-x | Aucune idée... Là j'ai repompé en grande partie un script trouvé dans un forum, sans v. | 16:16:56 |
gil-x | Oh... mais qui voilà ? L'inpecteur Gadget ! jlancey | 16:17:16 |
Adrien (Iglou.eu) | C'est sur que lui il doit forcement avoir une moulinette pour faire ca ! | 16:17:40 |
@pikuakan:matrix.org | Que passa Caramba !! | 16:18:04 |
Adrien (Iglou.eu) | Chat GPT dit un truc comme ca
import bpy
# Fonction pour créer une ligne entre deux points
def draw_line(p1, p2):
vertices = [p1, p2]
edges = [(0, 1)]
mesh = bpy.data.meshes.new(name="line")
mesh.from_pydata(vertices, edges, [])
object = bpy.data.objects.new("LineObj", mesh)
# Adding the object to the scene
scene = bpy.context.scene
scene.collection.objects.link(object)
# Emplacement du fichier contenant les vecteurs XYZ
file_path = "chemin/vers/votre/fichier.xyz"
# Lire le fichier et stocker chaque vertex dans une liste
points = []
with open(file_path, 'r') as file:
for line in file:
if line.startswith('v'):
parts = line.split()
x,y,z=[float(coord) for coord in parts[1:]]
point=(x,y,z)
points.append(point)
# Dessiner des lignes entre les sommets consécutifs (si nécessaire)
for i in range(len(points)-1):
draw_line(points[i], points[i+1])
Exécution du Script:
Ouvrez Blender.
Allez dans la fenêtre "Scripting".
Copiez-collez ce script dans l'éditeur texte.
Cliquez sur Run Script.
| 16:19:09 |
gil-x | jlanceyest un expert de ce genre de conversion, il ne fait que ça. J'ai pu négocier une sortie de 2 jours avec son psychiatre pour qu'il puisse donner son avis sur ce problème. | 16:19:30 |
Adrien (Iglou.eu) | * Chat GPT dit un truc comme ca
import bpy
# Fonction pour créer une ligne entre deux points
def draw_line(p1, p2):
vertices = [p1, p2]
edges = [(0, 1)]
mesh = bpy.data.meshes.new(name="line")
mesh.from_pydata(vertices, edges, [])
object = bpy.data.objects.new("LineObj", mesh)
# Adding the object to the scene
scene = bpy.context.scene
scene.collection.objects.link(object)
# Emplacement du fichier contenant les vecteurs XYZ
file_path = "chemin/vers/votre/fichier.xyz"
# Lire le fichier et stocker chaque vertex dans une liste
points = []
with open(file_path, 'r') as file:
for line in file:
if line.startswith('v'):
parts = line.split()
x,y,z=[float(coord) for coord in parts[1:]]
point=(x,y,z)
points.append(point)
# Dessiner des lignes entre les sommets consécutifs (si nécessaire)
for i in range(len(points)-1):
draw_line(points[i], points[i+1])
Exécution du Script:
- Ouvrez Blender.
- Allez dans la fenêtre "Scripting".
- Copiez-collez ce script dans l'éditeur texte.
- Cliquez sur Run Script.
| 16:19:38 |