[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
попиксельное вычисление пересечения точки с mesh(3d)
polopokДата: Среда, 21 Апреля 2010, 20:13 | Сообщение # 1
Начинающий
Группа: Пользователи
Сообщений: 13
Награды: 0
Замечания: 0%
Статус:
задача вычислить координаты пересечения с 3d объектом попиксельно
то есть как бы просканировать mesh
наподобие оператора getpixsel
пожалуйста приведите пример

вот мой пример для 2d

Code
Graphics 1200,800
SetBuffer BackBuffer()
x= 20  
d= 0  
  s=28
y= 20
i=0
f=30
n=-1
dddPlayer=LoadImage("C:\Users\bonivur\Pictures\blitz\cccc.jpg")
gfxPlayer=LoadImage("C:\Users\bonivur\Pictures\blitz\c cc"+i+".jpg")
Die=LoadSound("C:\Users\bonivur\Pictures\blitz\beep.wav")

While Not KeyHit(1)
gfxPlayer=LoadImage("C:\Users\bonivur\Pictures\blitz\ccc"+i+".jpg")
;.gow
Cls
DrawImage gfxPlayer,2, f

Delay 50
;GetColor x,y
GetColor d,s
If KeyDown(200) Then y = y-1
If KeyDown(208) Then y = y+1
If KeyDown(203) Then x = x-1
If KeyDown(205) Then x = x+1
If KeyHit(57) Then muz()
re= ColorRed()
gr= ColorGreen()
bl= ColorBlue()
r= re+gr+bl

r = ColorRed()+ColorGreen() +ColorBlue()
If r =765 Then  
SoundPan die,n
PlaySound die
End If
d= d+1
If d =20 Then  
d=0
s=s+1
End If
If  s=32 Then  
s=28  
d=0
FreeImage gfxPlayer
i=i+1
Delay 2000
End If
If i=3 Then
i=0
;End
End If
Color 255,255,255  
Text 1,1,"Box at "+d+","+s+"  B RGB:" + re + "," + gr + "," + bl+ "!"+r+""  
DrawImage dddPlayer,d,s
Flip  

Wend

Function muz()
If n=1 Then n=-1
If n=-1 Then n=1
   
End Function
 
OptimusДата: Четверг, 22 Апреля 2010, 08:47 | Сообщение # 2
Крутой
Группа: Участники
Сообщений: 646
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: Solomanders te@m
Проектов: TripleWar(разработка)
[offtop]огого.................чтото новенькое. У меня даже в понимании такого не было. Но зачем тебе это?

ах и кстати, зачем тебе эта функция?

Code
Function muz()  
If n=1 Then n=-1  
If n=-1 Then n=1  
     
End Function
[/offtop]


Internet Explorer-замечательный браузер для того чтобы зайти и скачать Firefox
 
polopokДата: Четверг, 22 Апреля 2010, 09:27 | Сообщение # 3
Начинающий
Группа: Пользователи
Сообщений: 13
Награды: 0
Замечания: 0%
Статус:
Code
Function muz()   
If n=1 Then n=-1   
If n=-1 Then n=1   
       
End Function

да это остаток прошлого кода просто лень код почистить.
а по вопросу есть какой пример?
 
polopokДата: Четверг, 22 Апреля 2010, 22:49 | Сообщение # 4
Начинающий
Группа: Пользователи
Сообщений: 13
Награды: 0
Замечания: 0%
Статус:
все таки интересно товарищи рассуждающие и практикующие ....
неужто никто не откликнется по данной теме???
 
polopokДата: Пятница, 23 Апреля 2010, 17:56 | Сообщение # 5
Начинающий
Группа: Пользователи
Сообщений: 13
Награды: 0
Замечания: 0%
Статус:
1. загружается mesh допустим шар.
2. создается "контейнер" (box,квадрат,прямоугольник)
3. mesh(шар) помещается внутри "контейнера"
4. изменяется размер mesh-а(шара) в соответствии с размерами "контейнера"
5. по осям X,Y с шагом в 0.1 проверяется область "контейнера" как бы сканируя точка за точкой стоку за строкой ,
при завершении смещается по оси Z на 0.1 . продолжается процесс сканирования на всю глубину(Z) "контейнера"
6. в ходе сканирования пространства внутри "контейнера" определить "точка" сканирования находится внутри mesh-а(шара) или снаружи
7. если "точка" сканирования находится внутри ,то издать звук №1 ,иначе звук №2 и так по каждой "точке" пространства "контейнера"
Я очень расчитываю на вашу помощь , помощь настоящих ПРОФЕССИОНАЛОВ ,СПЕЦИАЛИСТОВ В СВОЕМ ДЕЛЕ.
хорошо бы пример.
С УВАЖЕНИЕМ POLOPOK
 
polopokДата: Суббота, 24 Апреля 2010, 16:46 | Сообщение # 6
Начинающий
Группа: Пользователи
Сообщений: 13
Награды: 0
Замечания: 0%
Статус:
вот пример ,но при перемещении по оси z не всегда определяется объект (шар полупрозрачный)

Code
Graphics3D 640,480  
SetBuffer BackBuffer()  
z#=2
x#=0.1
y#=0
camera=CreateCamera()  
s=0
light=CreateLight()  
RotateEntity light,90,0,0  
t#=0.01
; Create cube  
cube=CreateSphere()  
;cube=CreateCube()  
;cube=LoadMesh("C:/Users/bonivur/1qq.3ds")
Sphere=CreateSphere()  
EntityAlpha cube,0.2

ScaleEntity Sphere,0.01,0.01,0.01
EntityPickMode cube,2
NameEntity cube,"cube"
PositionEntity cube,0,0,5  

en=0
;While en=0
While Not KeyDown( 1 )  
If KeyHit(200)=True Then z#=z#+0.01;208
If KeyHit(208)=True Then z#=z# - 0.01;200
If KeyHit(205)=True Then x#=x#+0.01; 203
If KeyHit(203)=True Then x#=x# - 0.01;205

LinePick x#,0,z#,x#,0,z#-0.01
PositionEntity Sphere,X#,0,Z#
  en=PickedEntity()
  If en
   If EntityName(en)="cube"         ; проверка  
   
   Else
    en=0
   EndIf
  EndIf
If MeshesIntersect(Sphere,cube)=True  
  s=1
Else
s=0
EndIf  
;If c#= EntityZ(cube) Then s=1

;Wend

RenderWorld  
Text 0,0," x# "+x#+" z# "+z#+" en "+en+"  Picked Z-   "+PickedZ()+"  Picked Y-  "+PickedY()+"  Picked X-  "+PickedX()
Text 0,10," x# "+x#+" z# "+z#+" en "+en+"  Entity Z-   "+EntityZ(Sphere)+"  Entity Y-  "+EntityY(Sphere)+"  Entity X-  "+EntityX(Sphere)
Text 0,30,"                     en        --"+en+ " s-- "+s;+EntityZ(Sphere)
Flip  
Wend  

End

меня интересует как исправить данную проблемму?

 
polopokДата: Воскресенье, 25 Апреля 2010, 15:42 | Сообщение # 7
Начинающий
Группа: Пользователи
Сообщений: 13
Награды: 0
Замечания: 0%
Статус:
какая жалость что нет обсуждения cry
 
DrawДата: Суббота, 08 Мая 2010, 17:19 | Сообщение # 8
Продвинутый
Группа: Участники
Сообщений: 194
Награды: 0
Замечания: 0%
Статус:

Команда: DeforShys
Проектов: 8 (2 активных 6 инактив)
Quote (polopok)
Function muz()
If n=1 Then n=-1
If n=-1 Then n=1

End Function

а не проще было написать n=-n?
--
я не совсем понял что ты хочешь.
По твоему объяснению я понял что ты хочешь на экране сканировать 3д меш; вот так я понял твой настрой:
1. Пик камеры в область пространства с циклом for от 0 до конца по осям x и y экрана
2. условие принадлежит ли точка "сканирования" мешу
- да звук какой то
- нет звук другой
но причем тут ось z?

2 вариант моего понимания:
1. условная точка (иначе как pivot) ставится в центр меша
2. циклом for двигается по оси Z
2.1 циклом for двигается по оси X (внутри цикла с Z)
2.2 циклом for двигается по оси Y (внутри цикла с X и Z)
3. если находится в меше то издать какой то звук иначе другой



ICQ 557709132 пиши. Отвечу на любой вопрос по блицу
 
polopokДата: Суббота, 03 Июля 2010, 16:48 | Сообщение # 9
Начинающий
Группа: Пользователи
Сообщений: 13
Награды: 0
Замечания: 0%
Статус:
2 вариант моего понимания:
1. условная точка (иначе как pivot) ставится в центр меша
2. циклом for двигается по оси Z
2.1 циклом for двигается по оси X (внутри цикла с Z)
2.2 циклом for двигается по оси Y (внутри цикла с X и Z)
3. если находится в меше то издать какой то звук иначе другой

да я сделал такой вариант ,но это слишком долго ведь проверить надо весь объём меша!
 
  • Страница 1 из 1
  • 1
Поиск: