Hi!
I have point and object. How I can know point on object or no?
Easiest way would be to use a bvh tree and do an overlap test. If it overlaps, you can then use the resulting face index to do a point on plane test.
ΠΡΠ»Π³Π°ΡΡΠΊΠΈ (Bulgarian)
Π·Π΄ΡΠ°Π²Π΅ΠΉ ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ° ΠΈΠ·Π±ΡΠ°Π½ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ, ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΎΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ±Π΅ΠΊΡ:
- Π Π΅ΠΆΠΈΠΌ Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅
- Π Π΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·Π²Π°ΠΉΠ²Π°Π½Π΅
- ΠΠ΅ΡΡΠ΅ΠΊΡ ΡΠ΅ΠΆΠΈΠΌ
- Π Π΅ΠΆΠΈΠΌ Π½Π° ΡΠ΅Π³Π»ΠΎ
- Π Π΅ΠΆΠΈΠΌ Π½Π° ΡΠ΅ΠΊΡΡΡΡΠ°
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ:
import bpy
print(bpy.context.objects_in_mode)
ΠΠ΅ Π·Π½Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΈΡΠΎ ΠΈ Π΄Π° Π±ΠΈΠ»ΠΎ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π½Π° Π²ΡΡΡ , ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π·Π°ΡΠΎΡΠΎ Π½ΡΠΌΠ° Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΡΡΡ ΠΈ Π΄Π° Π½Π΅ Π·Π½Π°ΠΌ ΠΎΡ ΠΊΠΎΠΉ ΠΎΠ±Π΅ΠΊΡ Π΅ ΡΠΎΠ·ΠΈ Π²ΡΡΡ .
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΡΡΡ Π° Π½Π° ΠΎΠ±Π΅ΠΊΡ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ:
import bpy
print(bpy.data.objects["Cube"].data.vertices[0])
ΠΠ»ΠΈ Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΡΡΡ ΠΎΠ²Π΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ ΠΏΠΎ-ΡΠ°Π½ΠΎ:
import bpy
for o in bpy.context.objects_in_mode:
for v in o.data.vertices:
print(str(o) + " | " + str(v))
ΠΠ½Π³Π»ΠΈΠΉΡΠΊΠΈ (English)
Hi. You can check to see which objects are selected in a mode other then object mode:
- Edit Mode
- Sculpt Mode
- Vertex Mode
- Weight Mode
- Texture Mode
Using:
import bpy
print(bpy.context.objects_in_mode)
Iβm not aware of any ways to get the parent of a vertex, particularly because thereβs no way to get a vertex and not know which object that vertex is from.
You can get a objectβs vertex by using indexes:
import bpy
print(bpy.data.objects["Cube"].data.vertices[0])
Or if you want to get the vertexes using the function I showed earlier:
import bpy
for o in bpy.context.objects_in_mode:
for v in o.data.vertices:
print(str(o) + " | " + str(v))