forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   модель из Желе (http://forum.boolean.name/showthread.php?t=4821)

Horror 20.10.2007 22:26

модель из Желе
 
всем привет
не подскажете как сделать модель
как бы из желе , ну чтоб так бы треслась забавно)
может физику подкрутить ?
помогите оч хочеться)

jimon 20.10.2007 23:38

Re: модель из Желе
 
Смотри PhysX -> Soft Body

Horror 21.10.2007 00:35

Re: модель из Желе
 
Пасибо щас поищу!

а может можно и без физы , а то надо всего то
, а подключать большую либу (

в теорие расскажите плиз как это сделать , я попробую
наверно точками шевелить? но у меня не оч получается гладко)

а физика это в том случае если у самого не получеться(

ПС не потеме , а как можно связаться с Рендером он вроде физикс делал , если ему не трудно может он мне расскажит [надеюсь]
или хотяб ключ к физике даст !

___________


а вот еще скачал отсюда http://rubux.net/content/blogsection/1/5/
физикс , а ни один пример не работает
причина что у меня нет ключа?
или в том что у меня руки пот это дело не заточены

пишет ошибу драйвер нот фонд , и еще какуето...

ЛысыЙ_Чук-Иванчук 21.10.2007 01:32

Re: модель из Желе
 
зачем чтото спрашивать када пример есть?

Horror 21.10.2007 01:38

Re: модель из Желе
 
Цитата:

зачем чтото спрашивать када пример есть?
что то не понял это к чему?
написал же что примеры у меня не работают т.к.
видимо у меня нет ключа!

и всеже я пока надеюсь что удастся сделать без подключение
физики (

tormoz 21.10.2007 04:59

Re: модель из Желе
 
Код:

;********************DEMO 2****************
 
Graphics3D 640,480,32
 
HidePointer 
 
;gravitation 
Global grav_x#= 0 
Global grav_y#=-0.08 
Global grav_z#= 0 
 
;hohe des bodens 
Global ground%=-5 
 
Global camera=CreateCamera() 
PositionEntity camera,0,1,-24 
 
Global light=CreateLight() 
LightColor light,200,200,200 
 
;spiegelnder untergrund 
plane=CreatePlane() 
PositionEntity plane,0,ground,0 
EntityColor plane,20,20,100 
EntityAlpha plane,0.85 
mirror=CreateMirror(plane) 
MoveEntity mirror,0,0.01,0 
 
 
Type mass 
  Field x#,y#,z# 
  Field xs#,ys#,zs# 
  Field xo#,yo#,zo# 
  Field fix% 
End Type 
 
Type spring 
  Field m1%,m2% 
  Field l# 
End Type 
 
Type face 
  Field surf% 
  Field m1%,m2%,m3%,m4% 
  Field v1%,v2%,v3%,v4% 
End Type 
 
Dim cube(6) 
Dim texture(6) 
 
Function add_mass(x#,y#,z#,f%) 
  m.mass=New mass 
  m\x=x 
  m\y=y 
  m\z=z 
  m\fix=f 
  Return Handle(m) 
End Function 
 
Function add_spring(m1%,m2%) 
  ma1.mass = Object.mass(m1) 
  ma2.mass = Object.mass(m2) 
 
  s.spring = New spring 
  s\m1 = m1 
  s\m2 = m2 
  s\l = ( ( ma1\x - ma2\x )^2 + ( ma1\y - ma2\y )^2 + ( ma1\z - ma2\z )^2 ) 
 
  Return Handle(s) 
End Function 
 
Function add_face(mesh%, m1%,m2%,m3%,m4%) 
  ma1.mass = Object.mass(m1) 
  ma2.mass = Object.mass(m2) 
  ma3.mass = Object.mass(m3) 
  ma4.mass = Object.mass(m4) 
 
  f.face=New face 
  f\surf=CreateSurface(mesh) 
  f\m1=m1 
  f\m2=m2 
  f\m3=m3 
  f\m4=m4 
  f\v1=AddVertex (f\surf,ma1\x,ma1\y,ma1\z, 0,0) 
  f\v2=AddVertex (f\surf,ma2\x,ma2\y,ma2\z, 1,0) 
  f\v3=AddVertex (f\surf,ma3\x,ma3\y,ma3\z, 1,1) 
  f\v4=AddVertex (f\surf,ma4\x,ma4\y,ma4\z, 0,1) 
  AddTriangle f\surf,f\v1,f\v2,f\v3 
  AddTriangle f\surf,f\v1,f\v3,f\v4 
End Function 
 
Function update_object() 
  ;update federn 
  For t=1 To 3 
  For s.spring = Each spring 
 m1.mass = Object.mass(s\m1) 
 m2.mass = Object.mass(s\m2) 
 
 lx# = ( m1\x + m1\xs ) - ( m2\x + m2\xs ) 
 ly# = ( m1\y + m1\ys ) - ( m2\y + m2\ys ) 
 lz# = ( m1\z + m1\zs ) - ( m2\z + m2\zs ) 
 
 lg# = ( lx * lx + ly * ly + lz * lz ) 
 ld# =  0.2 * ( s\l - lg )  / lg 
 
 lx = ( lx * ld ) 
 ly = ( ly * ld ) 
 lz = ( lz * ld ) 
 
 m1\xs = m1\xs + lx 
 m1\ys = m1\ys + ly 
 m1\zs = m1\zs + lz 
 m2\xs = m2\xs - lx 
 m2\ys = m2\ys - ly 
 m2\zs = m2\zs - lz 
  Next 
  Next 
 
  ;update massen 
  For m.mass = Each mass 
 m\xo = m\x 
 m\yo = m\y 
 m\zo = m\z 
 If ( m\y + m\ys ) > ground Then 
    m\xs = m\xs + grav_x 
    m\ys = m\ys + grav_y 
    m\zs = m\zs + grav_z 
 
    If m\fix = False Then 
  m\x = m\x + m\xs 
  m\y = m\y + m\ys 
  m\z = m\z + m\zs 
    Else 
  m\xs = 0 
  m\ys = 0 
  m\zs = 0 
    EndIf 
 Else 
    m\y = ground 
    m\xs = 0 
    m\ys = 0 
    m\zs = 0 
 EndIf 
  Next 
 
  ;update faces 
  For f.face = Each face 
 ma1.mass = Object.mass(f\m1) 
 ma2.mass = Object.mass(f\m2) 
 ma3.mass = Object.mass(f\m3) 
 ma4.mass = Object.mass(f\m4) 
 VertexCoords f\surf,f\v1,ma1\x,ma1\y,ma1\z 
 VertexCoords f\surf,f\v2,ma2\x,ma2\y,ma2\z 
 VertexCoords f\surf,f\v3,ma3\x,ma3\y,ma3\z 
 VertexCoords f\surf,f\v4,ma4\x,ma4\y,ma4\z     
  Next 
 
  For t=0 To 5 
 ;UpdateNormals cube(t) 
  Next 
End Function 
 
 
Function check_mouse() 
  For m.mass=Each mass 
 If m\y<=ground Then floor_hit=True:Exit 
  Next 
 
  If floor_hit Then 
 mx# = MouseXSpeed() * 0.02 
  my# = MouseYSpeed() * 0.02 
  MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 
  If MouseHit(1) Then mz#=15 
 m.mass = Last mass 
 m\xs = m\xs + mx 
 m\zs = m\zs - my 
 m\ys = m\ys + mz 
  EndIf 
End Function 
 
Function Create_Cube() 
 
  ;massenpunkte festlegen 
  m0 = add_mass (-5, 5,-5, False) 
  m1 = add_mass ( 5, 5,-5, False) 
  m2 = add_mass ( 5,-5,-5, False) 
  m3 = add_mass (-5,-5,-5, False) 
  m4 = add_mass (-5, 5, 5, False) 
  m5 = add_mass ( 5, 5, 5, False) 
  m6 = add_mass ( 5,-5, 5, False) 
  m7 = add_mass (-5,-5, 5, False) 
  mm = add_mass ( 0, 0, 0, False) 
 
  ;massen mit federn verbinden 
  add_spring (mm,m0) 
  add_spring (mm,m1) 
  add_spring (mm,m2) 
  add_spring (mm,m3) 
  add_spring (mm,m4) 
  add_spring (mm,m5) 
  add_spring (mm,m6) 
  add_spring (mm,m7) 
  add_spring (m0,m1) 
  add_spring (m1,m2) 
  add_spring (m2,m3) 
  add_spring (m3,m0) 
  add_spring (m4,m5) 
  add_spring (m5,m6) 
  add_spring (m6,m7) 
  add_spring (m7,m4) 
  add_spring (m0,m4) 
  add_spring (m1,m5) 
  add_spring (m2,m6) 
  add_spring (m3,m7) 
  add_spring (m0,m6) 
  add_spring (m1,m7) 
  add_spring (m5,m3) 
  add_spring (m4,m2) 
  add_spring (m0,m2) 
  add_spring (m1,m3) 
  add_spring (m4,m6) 
  add_spring (m5,m7) 
  add_spring (m0,m7) 
  add_spring (m3,m4) 
  add_spring (m1,m6) 
  add_spring (m5,m2) 
  add_spring (m0,m5) 
  add_spring (m1,m4) 
  add_spring (m2,m7) 
  add_spring (m3,m6) 
 
  ;wurfelmesh + texturen erstellen 
  SetFont LoadFont("arial",300) 
 
  For t=0 To 5 
 cube(t)=CreateMesh() 
 EntityFX cube(t),4 
 EntityShininess cube(t),0.5 
   
 texture(t)=CreateTexture(256,256) 
 SetBuffer TextureBuffer(texture(t)) 
 Color Rnd(0,255),Rnd(0,255),Rnd(0,255) 
 ClsColor ColorRed(),ColorGreen(),ColorBlue():Cls 
 Color 255-ColorRed(),255-ColorGreen(),255-ColorBlue() 
 Text 128,128,t+1,1,1 
  Next 
 
  add_face (cube(0),m0,m1,m2,m3) 
  add_face (cube(1),m6,m5,m4,m7) 
  add_face (cube(2),m5,m6,m2,m1) 
  add_face (cube(3),m0,m3,m7,m4) 
  add_face (cube(4),m4,m5,m1,m0) 
  add_face (cube(5),m3,m2,m6,m7) 
 
  For t=0 To 5 
 EntityTexture cube(t),texture(t) 
  Next 
End Function 
 
create_cube() 
 
SetBuffer BackBuffer() 
 
Color 255,255,255 
SetFont LoadFont("arial",20) 
 
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 
 
While Not KeyHit(1) 
 
  update_object() 
  check_mouse() 
 
  Delay(15) 
 
  RenderWorld() 
  Text 0,0,"Maus bewegen, Mausknopf drucken" 
  Flip 
Wend 
 
End


Fant 21.10.2007 10:56

Re: модель из Желе
 
первый раз запустил. Дрова слетели. Перезагрузил комп. Второй раз запустил, перезагрузилась винда)

Может что-то не так с примером? У всех идет?

Render 21.10.2007 14:44

Re: модель из Желе
 
Horror, какие демки запускал?
Fant, всё работает.
Очень кстати неплохой пример. Но для новичков будет сложноват, особено если делать что то посложнее куба :)

Fant 21.10.2007 15:02

Re: модель из Желе
 
Цитата:

Сообщение от Render
Horror, какие демки запускал?
Fant, всё работает.
Очень кстати неплохой пример. Но для новичков будет сложноват, особено если делать что то посложнее куба :)

может особенности моей карты?

Данил 21.10.2007 16:17

Re: модель из Желе
 
У меня все идет. ))

Horror 21.10.2007 16:28

Re: модель из Желе
 
Рендер
занчит попробую объяснить:
1) скачал отсюда http://rubux.net/content/blogsection/1/5/
2) скачал Blitz3D:PhysX wrapper и Blitz3D:59 samples
3) запускаешь любой семпл(из 59) он не работает
пишет pxИмяФункции not fond ...
4) Я открыл деклс фаил там название функции начинаються не с px а с ph т.е. видимо на сайте залита более старая версия длл так?
5)скачал Demos: Soft Bodies эти демки работают
6) взял библиотечки из демок и бросил их вместо тех
и терь этой ошибки нет (драйвер нот фонд) , но теперь он останавливается на этой строчке : PxCreateWorld(1, "key")

ПС может я что не так делаю (

Тормаз
пасибо за пример , но он действительно сложноват
и я не смогу понять как вместо куба загрузить 3д модель

НУ И суть
видимо я не правельно задал вопрос (каюсь)
мне не надо чтоб объект взаимодесвуя с каким либо объектом трясся
, а чтоб трясся всегда с определенной частотой
ну просто как анимации , если это можно сделать прям в максе буду рад!

т.е. в играх , к примеру, при хотьбе проиграваеться анимация хотьбы (т.е. модель просто шевелит ногами)
А моя модель должна трестись (Как желе) мой пресонаж это слизь-улитко ))





ЛысыЙ_Чук-Иванчук 21.10.2007 19:00

Re: модель из Желе
 
Проси у автора бездровную версию и не парь мозг!

Alex_Noc 02.11.2007 01:43

Re: модель из Желе
 
Вобщем я б посоветовал без физики да и без обьемного програмирования только в 3д максе сделать костями :) и модификатором flex. Единственный недостаток этого это то что модель как бы "статичной"получаеться - просто анимированная.

Render 02.11.2007 02:06

Re: модель из Желе
 
Horror, посмтри на той же страничке, в самом низу. Там лежат дрова. Вот их поставь и будет всё ок.
А вообще у меня с роду не было таких приставок, может это кто уже врапер себе присвоил ))

moka 02.11.2007 12:19

Re: модель из Желе
 
Horror, двигай вершины по синусу относительно текущим миллисекам и позиции вершины в мире. Будет тебе жиле.


Часовой пояс GMT +4, время: 05:11.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot