[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
В очередной раз про Ashadow
WalterДата: Четверг, 17 Декабря 2009, 19:12 | Сообщение # 1
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Всех приветствую!

Я прочитал поперек весь форум. Может конечно пропустил, НО не могли бы вы мне помочь вот с чем:

Никак не могу нормально подгрузить ашадоу. Теней она давать не хочет. Вроде бы освещает кубик как надо, а тени он не отбрасывает.
Может кто-нибудь помочь? (Ну примером допустим, только не стандартным с сайта Andreyman'a - там я чет так и не понял ничего)

 
WalterДата: Пятница, 18 Декабря 2009, 04:26 | Сообщение # 2
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Ну вот только не молчите, я же видел, что постоянно заходят люди на форум..... :(
 
WalterДата: Пятница, 18 Декабря 2009, 09:43 | Сообщение # 3
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Quote
Сначала сделай игру а потом наводи марофет

Я не делаю игру. Мне просто нужна отличная отрисовка мира, чтобы тени там всякие, несколько источников света (ну скажем лампочки) и т.д. Все что можно назвать игровым процессом заключается в хождении wasd и прыжке. Просто нужен мир.

Поможете? Могу написать код для правки, но там ничего нет особенного, так, камера, свет, земля да хождение...

 
WalterДата: Пятница, 18 Декабря 2009, 10:18 | Сообщение # 4
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Вот сама, так сказать, игра.... На всякий случай....

Code
;start time 12.12.09.
AppTitle "World"
Graphics3D 640, 480, 0, 2
SetBuffer BackBuffer()

CreateLight()

;create 3 copies of the same building
level1 = Building()
level2 = Building()
level3 = Building()

;!!
;instead of using RemoveTris, create three separate meshes
;one with all floors
;one with all the walls
;one with all the ceilings
;RemoveTris doesn't remove redundant vertices, so it is unoptimised
;!!
Const palke_col=5,share_col=6,cube_col=7

RemoveTris(level1, False, False) ;floor
RemoveTris(level2, True, False)  ;wall
RemoveTris(level3, False, True)  ;ceiling
EntityType level1, 2 ;floor
EntityType level2, 3 ;wall
EntityType level3, 4 ;ceiling
;EntityType cube, 5
EntityPickMode level1, 2 ;floor

Const sz = 10 ;player height

;create player
me = CreatePivot()
EntityType me, 1
EntityRadius me, 5, sz

;create camera
cam = CreateCamera()
EntityParent cam, me
PositionEntity cam, 0, 0, 0

;place player
PositionEntity me,0,50,200
ResetEntity me

Collisions 1, 2, 2, 3 ;floor
Collisions 1, 3, 2, 3 ;walls
Collisions 1, 4, 2, 3 ;ceiling

;objects
  cube = CreateCube()
  ScaleEntity cube,10,20,10
  PositionEntity cube,40,-60,20
         EntityColor cube,255,100,255
   EntityType cube,cube_col
  share = CreateSphere()
  ScaleEntity share,20,20,20
  PositionEntity share,40,-20,20
         EntityColor share,0,255,255
   EntityType share,share_col
  palke = CreateCylinder()
  ScaleEntity palke,10,30,10
  PositionEntity palke,50,-70,50
  EntityColor palke,255,255,0
  TurnEntity palke,90,0,90
    EntityType palke,palke_col
  Collisions 1,5,2,3
  Collisions 1,6,2,3
  Collisions 1,7,2,3

Local jsp# ;jump speed
Local xsp#, ysp# ;x/y speed

;reset mouse cursor
MoveMouse 400, 300
MouseXSpeed()
MouseYSpeed()

Repeat

  ;space = jumpkey
  jkey = KeyHit(57)

  ;lookaround with mouse  
  oldx# = EntityX(me)
  oldy# = EntityY(me)
  oldz# = EntityZ(me)
  MoveEntity me, xsp*2, 0, ysp*2
  If EntityCollided(me, 3) Then PositionEntity me, oldx, oldy, oldz ;bump into wall
   
  TurnEntity me, 0, -MouseXSpeed(), 0
  look# = look + MouseYSpeed()
  MoveMouse 400, 300
   
  If look < -80 Then look = -80
  If look > 80 Then look = 80
  RotateEntity cam, look, 0, 0

  ;whobble  
  x# = EntityX(me)
  z# = EntityZ(me)
  hh# = Sin((x + z) * 8) * 0.1
  PositionEntity cam, 0, hh#, 0

  ;jumping?   
  If jump > 0 Then

   xsp = xsp * 0.98 ;low friction
   ysp = ysp * 0.98

   TranslateEntity me, 0, jsp, 0 ;move up
   jsp = jsp * .9 ;jump friction
   If (EntityCollided(me, 2)) Then jump = 0 ;bump into floor
   If (EntityCollided(me, 4)) Then jump = 0 ;bump into ceiling
   jump = jump - 4
    
  ;not jumping?
  Else   

   xsp = xsp * 0.9 ;high friction
   ysp = ysp * 0.9
   
   ;jump key
   If jkey Then
    x# = EntityX(me)
    y# = EntityY(me)
    z# = EntityZ(me)
    ;only allow when on floor
    If LinePick(x,y,z,0,-(sz+1),0) Then jump=45:jsp=3
   Else
    ;fall down
    TranslateEntity me, 0, -gv#, 0
    If Not(EntityCollided(me, 2)) Then ;if not on floor
     gv = gv * 1.08 + 0.4 ;increase gravity
    Else
     gv = 0 ;reset gravity
      
     ;cursor keys (WASD)
     If KeyDown(30) Then xsp = xsp * 1.01 - 0.1
     If KeyDown(32) Then xsp = xsp * 1.01 + 0.1
     If KeyDown(31) Then ysp = ysp * 1.01 - 0.1
     If KeyDown(17) Then ysp = ysp * 1.01 + 0.1
    End If
   End If
  End If
    
  UpdateWorld
  RenderWorld

  Flip
   
Until KeyHit(1)

End

;remove certain tris
Type TTriangle
  Field v0, v1, v2
End Type
Function RemoveTris(mesh, invert, cei)

  lt = 0
  If EntityClass(mesh) = "Mesh" Then
   For i = 1 To CountSurfaces(mesh)
    s = GetSurface(mesh, i)
    For t = 0 To CountTriangles(s) - 1
     v0 = TriangleVertex( s, t, 0 )
     v1 = TriangleVertex( s, t, 1 )
     v2 = TriangleVertex( s, t, 2 )
     ax# = VertexX( s, v1 ) - VertexX( s, v0 )
     ay# = VertexY( s, v1 ) - VertexY( s, v0 )  
     az# = VertexZ( s, v1 ) - VertexZ( s, v0 )  
     bx# = VertexX( s, v2 ) - VertexX( s, v1 )
     by# = VertexY( s, v2 ) - VertexY( s, v1 )  
     bz# = VertexZ( s, v2 ) - VertexZ( s, v1 )  
     Nx# = ( ay * bz ) - ( az * by )
     Ny# = ( az * bx ) - ( ax * bz )
     Nz# = ( ax * by ) - ( ay * bx )
     If cei Then test2 = (ny < 0) Else test2 = (ny > 0)
     test = (Abs(ny) > Abs(nx)) And (Abs(ny) > Abs(nz)) And test2
     If invert Then test = Not(test)
      
     If test Then
      tt.TTriangle = New TTriangle
      tt\v0 = v0
      tt\v1 = v1
      tt\v2 = v2
     End If
      
    Next
    ClearSurface s, False, True
    ti = 0
    For tt.TTriangle = Each TTriangle
     AddTriangle s, tt\v0, tt\v1, tt\v2
     ti=ti+1
    Next
    Delete Each TTriangle
   Next
  End If
   
  For i = 1 To CountChildren(mesh)
   RemoveTris(GetChild(mesh, i), invert, cei)
  Next
   
  UpdateNormals mesh
   
End Function

;create building
Function Building()

  tex = CreateTexture(16, 16, 1+8)
  Rect 0, 0, 16, 16, False

  CopyRect 0, 0, 16, 16, 0, 0, BackBuffer(), TextureBuffer(tex)
  mesh = CreateCube()
  ScaleMesh mesh, 300, 80, 300
  FlipMesh mesh
  EntityTexture mesh, tex
  ScaleTexture tex, 0.01, 0.03
    
  Return mesh
   
End Function
 
WalterДата: Пятница, 18 Декабря 2009, 16:33 | Сообщение # 5
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Все понятно... Зае...тельский форум... Такие отзывчивые люди... good good good
 
WalterДата: Пятница, 18 Декабря 2009, 18:59 | Сообщение # 6
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Стандартные его примеры работают отлично. Но начинаю подключать ашадоу к любому проекту - нифига не выходит. С физикой вот нет проблем, а с визуализацией у меня плохо....

Ну а может быть есть нормальный примерчик без ашадоу, но тоже с реалистичным светом и тенью, а главное несколько источников света?......

 
gforcerДата: Пятница, 18 Декабря 2009, 20:05 | Сообщение # 7
Начинающий
Группа: Участники
Сообщений: 156
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: несколько
Проектов: РТС, Рейсинг, ФПС
если ashadows сложен, попробуй использовать другие либы и способы. Например, Devil ShadowSystem, хорошая система теней для простых сцен, рабтает на либы, быстро и просто, всего пара функций для подключения к проекту и работает.
phil
 
WalterДата: Суббота, 19 Декабря 2009, 05:31 | Сообщение # 8
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Quote
если ashadows сложен, попробуй использовать другие либы и способы. Например, Devil ShadowSystem, хорошая система теней для простых сцен, рабтает на либы, быстро и просто, всего пара функций для подключения к проекту и работает.
phil

А можешь ссылочку дать, а то я что-то не могу найти. dont_know И мануальчик какой-нить.
Да, и еще, а несколько источников света? Ну типа улица с фонарями она может сделать?

 
WalterДата: Суббота, 19 Декабря 2009, 09:48 | Сообщение # 9
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Спасибо, добрый саморитянин! Жаль что она платная....
 
WalterДата: Суббота, 19 Декабря 2009, 10:11 | Сообщение # 10
Начинающий
Группа: Участники
Сообщений: 9
Награды: 0
Замечания: 20%
Статус:
Посмотрел... Нет, это не то.... А больше ничего такого нету? Может кто бесплатное что-нибудь выкладывал.....
 
gforcerДата: Суббота, 19 Декабря 2009, 13:13 | Сообщение # 11
Начинающий
Группа: Участники
Сообщений: 156
Награды: 0
Замечания: 0%
Статус:

Профессия: Программист
Команда: несколько
Проектов: РТС, Рейсинг, ФПС
Walter, ты программист или нуб ?! Мы тебе здесь кучу либ перечислили, пробей по гуглу, например devil shadow system скачать итд итп.
Пользуйся поиском, или лучше поиском по форуму, так как здесь куча ответов на горы вопросов, среди них и твой есть, просто поищи
prof
 
  • Страница 1 из 1
  • 1
Поиск: