Тема: Вопрос
Показать сообщение отдельно
Старый 30.12.2010, 07:11   #9
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Вопрос

не могу понять почему не фурычит, вроде всё правильно.

Graphics3D 640,480,16,2
SetBuffer BackBuffer()
cam=CreateCamera()
PositionEntity cam,4,8,-10
Light=CreateLight()
TurnEntity light,90,0,0

Plan=Createface(10,1)
ScaleEntity plan,10,10,10
s=initsneg(plan)
cube=CreateCube()


Repeat

PointEntity cam,cube
MoveEntity cube,Float(KeyDown(205)-KeyDown(203))/10,0,Float(KeyDown(200)-KeyDown(208))/10
PickSneg(cube,.5,.6)
  UpdateWorld
  RenderWorld
Flip

Until KeyHit(1)

End
Type Sneg
Field Vert%
Field suf
Field sost
End Type

Function CreateFace(segs=1,double=False,parent=0)
	mesh=CreateMesh( parent )
	surf=CreateSurface( mesh )
	stx#=-.5
	sty#=stx
	stp#=Float(1)/Float(segs)
	y#=sty
	For a=0 To segs
		x#=stx
		v#=a/Float(segs)
		For b=0 To segs
			u#=b/Float(segs)
			AddVertex(surf,x,0,y,u,v) ; swap these for a different start orientation
			x=x+stp
		Next
		y=y+stp
	Next
	For a=0 To segs-1
		For b=0 To segs-1
			v0=a*(segs+1)+b:v1=v0+1
			v2=(a+1)*(segs+1)+b+1:v3=v2-1
			AddTriangle( surf,v0,v2,v1 )
			AddTriangle( surf,v0,v3,v2 )
			
		Next
	Next
	UpdateNormals mesh
	If double=True Then EntityFX mesh,16
	Return mesh
End Function

Function Initsneg(plan%)
If plan%=0 Return 0
s=GetSurface(plan,1)
p.Sneg=New sneg
p\suf=plan
For i=0 To CountVertices(s)-1
     p\sost=0
	p\vert=i
Next
Return 1
End Function

Function PickSneg(mesh%,l#,Rad#)
For a.sneg=Each sneg
suf=GetSurface(a\suf,1)
vert=a\vert
If VertexX(suf,avert)<EntityX(mesh)+Rad And VertexX(suf,avert)>EntityX(mesh)-Rad
If VertexZ(suf,avert)<EntityZ(mesh)+Rad And VertexZ(suf,avert)>EntityZ(mesh)-Rad
   If a\sost=0
     VertexCoords suf,vert,VertexX(suf,vert),VertexY(suf,vert)-l,VertexZ(suf,vert)
	a\sost=1


EndIf
EndIf
EndIf
Next
End Function
этот код, делает типа провала снега
(Offline)
 
Ответить с цитированием