How know point on object or no

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.

1 Like

Π‘ΡŠΠ»Π³Π°Ρ€ΡΠΊΠΈ (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))