Skocz do zawartości

Mritke

Members
  • Liczba zawartości

    2
  • Rejestracja

  • Ostatnia wizyta

Odpowiedzi dodane przez Mritke

  1. Witam.

     

    Potrzebuje napisać skrypt który importuje i rozmieszcza na scenie obiekty zdefiniowane w pliku(custom format .sce(textowy)), a właściwie prymitywnym drzewie hierarchicznym plików.

     

    Budowa pliku(znaczenia znaczników chyba nie muszę tłumaczyć):

     

    plik scena.sce:

    geomobj teren2_1_1

    file "scena\teren\teren2_1_1.obj" 512 1024

    pos -256 -256

    child_lod 0 768

    dist cheby xz

    xref "scena\sceterenu\teren1_1_1.sce"

    xref "scena\sceterenu\teren1_1_2.sce"

    xref "scena\sceterenu\teren1_2_1.sce"

    xref "scena\sceterenu\teren1_2_2.sce"

    end

    ....

     

     

    plik teren1_1_1.sce:

    geomobj teren1_1_1

    file "scena\teren\teren1_1_1.obj" 256 512

    pos -384 -384

    child_lod 0 384

    dist cheby xz

    xref "scena\rosliny\rosliny1_1_1.sce"

    end

    .....

     

    plik rosliny1_1_1.sce:

    geomobj OB_TRAWA

    file "scena\obiekty\trawa.obj" 0.0 50

    rot 0 56 0

    scl 0 0 0

    pos -492 33.8314 -336

    dist euclid

    end

    geomobj OB_DRZWEO

    file "scena\obiekty\drzewo.obj" 0.0 150

    rot 0 37 0

    scl 0 0 0

    pos -492 19.4751 -310

    dist euclid

    end

    geomobj OB_KRZEW

    file "scena\obiekty\krzew.obj" 0.0 100

    rot 0 12 0

    scl 0 0 0

    pos -488 48.7808 -426

    dist euclid

    end

    .........

    itd itp

     

    skrypt (formatowanie kodu się kompletnie sypie jak go wklejam ale może ktoś dojdzie co i jak):

    1. (
    2. fn openSCE fileName yep =
    3. (
    4. f = openfile (fileName)
    5. --f = openfile ("d:\scena\scena\rosliny\rosliny1_1_1.sce")
    6. if f == undefined then
    7. (
    8. MessageBox "nie wczytalem"
    9. )
    10. if f != undefined then
    11. (
    12. MessageBox fileName
    13. while not (eof f) do
    14. (
    15. l = readline f
    16. lf = filterString l " "
    17. lname = ""
    18. if yep=="true" then
    19. (
    20. if lf[1] == "geomobj" then
    21. (
    22. lname = lf[2]
    23. )
    24. if lf[1] == "file" then
    25. (
    26. local plugins = importerPlugin.classes
    27. local pluginName = Wavefront_Object
    28. if findItem plugins ObjImp != 0 then
    29. (pluginName = ObjImp)
    30. --MessageBox "file"
    31. --braclf =filterString lf[2] "\""
    32. s1 =lf[2]
    33. bracss=filterString s1 "\""
    34. importFile (bracss[1]) #noPrompt using:pluginName
    35. for i in selection do i.name = lname --max select none
    36. )
    37. if lf[1] == "pos" then
    38. (
    39. if (lf.count)==4 then
    40. (
    41. X=lf[2]as Float
    42. Y=lf[3]as Float
    43. Z=lf[4]as Float
    44. move $ [Z,-X,Y]
    45. )
    46. else
    47. (
    48. X=lf[3]as Float
    49. Y=lf[2]as Float
    50. move $ [X,-Y,0]
    51. )
    52. )
    53. ) ---yep yep yep
    54. if lf[1] =="xref" then
    55. (
    56. s1 =lf[2]
    57. bracss=filterString s1"\""
    58. if matchPattern s1 pattern:"rosliny" then
    59. (
    60. openSCE bracss[1] "true"
    61. )
    62. else
    63. (
    64. openSCE bracss[1] "no"
    65. )
    66. )
    67. )
    68. close f
    69. )
    70. )
    71. --openSCE "scena\\rosliny\\rosliny1_1_1.sce" "true"
    72. --openSCE "scena\rosliny1_1_1.sce" "true"
    73. openSCE "scena\\scena.sce" "true"
    74. )

     

     

     

    Skrypt czyta pojedyncze pliki bez problemu. Nie działa jednak już gdy jest wykonany w rekursji-pliki się otwierają ale chyba nic z nich nie jest czytane. Wydaje mi się że maxscrypt poze mieć problemy z czytaniem z wielu plików na raz... Albo po prstu jest coś o czym nie wiem i nie mogę znaleźć. Foldery są zdefiniowane poprawnie otwiera wszystkie pliki ale żadne operacje nie są wykonywane.

  2. rysunki są bardzo fajne... ale nawet jak na szkice... perspektywa nie jest zachowana, szczególnie widać to na kołach kiedy nie są ustawione współliniowo, równolegle do teoretycznej osi samochodu, a imo kontury samochody urywają się zbyt wcześnie(często widać to na maskach)

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności