User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 27

Тема: Быстрое вращение в 3Д

  1. #11

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,551
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TmK Посмотреть сообщение
    Ну код для ротатора на основе таблиц произведений координат на sin/cos углов я думаю не сложно написать.
    Вершины дрожать будут?

  2. #12

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По опыту: младшим байтом таблицы лучше адресовать радиус, а старшим- угол поворота. Ибо гранулярность угла (~6 градуса для 16к-таблицы и ~3 градуса для 32к-таблицы) не так мешает, как ограничение на длину. Тем более что для маленьких радиусов половина таблицы будет иметь одинаковые значения.
    В разделе кодинга TaganNews две статьи писал на эту тему. С примерами.

  3. #13

    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    Вершины дрожать будут?
    Надо смотреть.
    При малых шагах по углам вращений и низком фпс наверняка будут.
    но если подобрать шаги и достаточно динамично по фпс сделать то незаметно дрожания.
    а вообще да, никто не мешает как Vitamin предложил взять диапазон угла 64 (старший байт адреса таблицы), а диапазон координат 128 (младший).
    И хранить тока coord*cos(alpha), а sin получать увеличением угла на нужное значение. А по адресам где младший байт больше 128 хранить проекции без добавления X0,Y0 (при этом в старшем байте берем Z/2)
    В принципе можно и для чанков так сказать из большего в меньшее, т.е. в таблице храним проекции поделенные на коэффициент.
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  4. #14

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,551
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А-а, ну нафик, слишком сложно для меня.

    Да и демка не игра, заранее просчитать координаты, сцена будет динамичнее и зрелищнее.
    Все равно два с половиной человек поймет, что оно не совсем реалтайм, а кому-то что то доказывать... ушли уже те времена.

  5. #15

    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    Странно что CJ молчит. Не все же у них анимация?
    везде и всегда!

    честная математика для 3D у нас сделана в HARM, TRAUMWERK и WEED - причем в WEED используется немного измененные исходники из Spectrum Expert'a (X-Trade). В чанковом 3D движок я писал полностью сам, но опирался опять же на x-trade'овские сорцы - отличие в скорости есть, но не сказать что сильно уж значительное. Еще использовались некоторые математические процедуры от Baze/3SC (немного оптимизированные), которые можно посмотреть у него на страничке.

  6. #16

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вспоминаем IRIS Часть 3.5MHz называется
    http://zxaaa.untergrund.net/DISKI/disk50.zip

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поворот одной точки по трем осям (оптимизация возможна):

    Код:
    ;IX - pointer to <x,y,z> coords (input)
    ;IY - pointer to <x,y> coords (output)
            LD A,(RX)
            AND 252
            RRA
            SCF
            RRA
            LD H,A
    
            LD L,(IX+1)     ;Y
            LD B,L
            LD C,(HL)       ;Y*SIN(RX)
            LD L,(IX+2)     ;Z
            LD E,(HL)       ;Z*SIN(RX)
    
            LD A,H
            ADD A,16
            AND 191
            LD H,A
    
            LD A,(HL)       ;Z*COS(RX)
            ADD A,C
            LD C,A          ;Z'= Z*COS(RX)+Y*SIN(RX)
    
            LD L,B          ;Y
            LD A,(HL)       ;Y*COS(RX)
            SUB E
            LD E,A          ;Y''=Y*COS(RX)-Z*SIN(RX)
    
            LD A,(RY)
            AND 252
            RRA
            SCF
            RRA
            LD H,A
    
            LD L,C
            LD C,(HL)       ;Z'*SIN(RY)
    
            LD A,H
            ADD A,16
            AND 191
            LD H,A
    
            LD L,(IX)       ;X
            LD A,(HL)       ;X*COS(RY)
            ADD A,C
            LD C,A          ;X''=X*COS(RY)+Z'*SIN(RY)
    
            LD A,(RZ)
            AND 252
            RRA
            SCF
            RRA
            LD H,A
    
            LD L,C
            LD B,(HL)       ;X''*SIN(RZ)
            LD L,E
            LD E,(HL)       ;Y''*SIN(RZ)
    
            LD A,H
            ADD A,16
            AND 191
            LD H,A
    
            LD A,(HL)       ;X''*COS(RZ)
            ADD A,B
            ADD A,96
            LD (IY+1),A ;Y'''
            LD L,C
            LD A,(HL)       ;Y''*COS(RZ)
            SUB E
            ADD A,128
            LD (IY),A           ;X'''
    
            INC IX
            INC IX
            INC IX
            INC IY
            INC IY
    И расчет таблицы:
    Код:
    DECRUNT LD HL,#8000
    DCR     PUSH HL
            LD A,H
            SUB #80
            ADD A,A
            ADD A,A
            LD H,L
            CALL HSINA
            POP HL
            LD (HL),A
            INC HL
            LD A,H
            CP 192
            JR NZ,DCR
            RET
    
    HSINA                           ;A=H*SIN A
            LD D,'SINUS
            LD E,A
            LD A,(DE)
    HMULAA  AND A
            JP M,NEGE
            BIT 7,H
            JR Z,ALPOS
            EX AF,AF'
            LD A,H
            NEG
            LD H,A
            EX AF,AF'
            JR NEGRES
    ALPOS   CALL MULS
            ADD HL,HL
            LD A,H
            RET
    
    NEGE    NEG
            BIT 7,H
            JR Z,NEGRES
            EX AF,AF'
            LD A,H
            NEG
            LD H,A
            EX AF,AF'
            JR ALPOS
    NEGRES  CALL MULS
            ADD HL,HL
            LD A,H
            NEG
            RET
    
    HMULA   AND A
            JP M,NEGE1
            BIT 7,H
            JR Z,ALPOS1
            EX AF,AF'
            LD A,H
            NEG
            LD H,A
            EX AF,AF'
            JR NEGRES1
    ALPOS1  CALL MULS
            ADD HL,HL
            RET
    
    NEGE1   NEG
            BIT 7,H
            JR Z,NEGRES1
            EX AF,AF'
            LD A,H
            NEG
            LD H,A
            EX AF,AF'
            JR ALPOS1
    NEGRES1 CALL MULS
            ADD HL,HL
            LD A,H
            CPL
            LD H,A
            LD A,L
            CPL
            LD L,A
            INC HL
            RET
    
    MULS                    ;HL=H*A
            LD L,0
            LD D,L
            LD E,A
    CWERT   DUP     8
            ADD HL,HL
            JR NC,$+3
            ADD     HL,DE
            EDUP
            RET

  9. #18

    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Вспоминаем IRIS Часть 3.5MHz называется
    http://zxaaa.untergrund.net/DISKI/disk50.zip
    Опа на... а мужики то не знают...
    Первый раз вижу. Интересно что еще интересного я пропустил.
    Единственное что смущает - пирамида с такой же скоростью крутится как и многогранные объекты, если прикинуть что там гдето порядка 30 полигонов и в пирамиде тока четыре.
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  10. #19

    Регистрация
    16.01.2005
    Адрес
    Пермь
    Сообщений
    514
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    смешные вы.. тут думаешь, что 256 итераций поворота то мало для красивых эффектов, а вы это чистло до 64 сокращаете..

  11. #20

    Регистрация
    22.02.2005
    Адрес
    triebkraft
    Сообщений
    712
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TmK Посмотреть сообщение
    Единственное что смущает - пирамида с такой же скоростью крутится как и многогранные объекты, если прикинуть что там гдето порядка 30 полигонов и в пирамиде тока четыре.
    дык - может там везде 50фпс??? щас смотреть неохота - это же гдето там в середине...

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Быстрое самоуничтожение
    от Barmaley_m в разделе Программирование
    Ответов: 13
    Последнее: 25.09.2007, 09:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •