Перейти к содержимому

Фотография
- - - - -

Фришип (Лазарус). Ошибки программы, исправления и улучшения.

FreeShip Lazarus

Сообщений в теме: 825

#526 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 04 мая 2020 - 15:19

С какой плоскостью? Какой смысл показывать координаты того, чего нет?

 

не обязательно с видами мутить, можно и так сделать.

Я же даже нарисовал с какой.Смысл в том что какие то координаты надо возвращать. И если например мы бы что то вставляли в 3д (точку например), то она появилась бы по этим координатам. В ФШ это просто не делали.

Это ж нем я придумал.Это так сделано. :)


Сообщение отредактировал a_max: 04 мая 2020 - 15:41

  • 0

#527 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 04 мая 2020 - 18:47

Не видно. Где?
Точки мы вставляем в ортогональных окнах. И вних одна из координат ставится в 0. В перспективном мы не можем вставлять УВ.

 


  • 0

#528 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 04 мая 2020 - 19:22

Не видно. Где?
Точки мы вставляем в ортогональных окнах. И вних одна из координат ставится в 0. В перспективном мы не можем вставлять УВ.

Я рисую, рисую :) . Вот, сделал подробнее.

 

Во ФШ да, там ничего не вставляется в 3д окне, поэтому и 3д координаты курсора в общем были  ни к чему. Выбор же идет на плоской проекции наверное. А вот в других программах там в зд можно вставлять примитивы. поэтому уже и нужны постоянные привязки курсора к какой то плоскости.

Обычно есть плоскости xy/xz/yz и динамическая ЭСК как на картинке. В некоторых системах курсор "ездит" по заданной плоскости, например xy(вид сверху), чтоб нарисовать на yz надо переключиться (это там где один экран). В рино есть зависимость от того при каком активном экране активирована команда, по той СК и будет чертить.

Прикрепленные изображения

  • DS_plan_cursor_vector.JPG

  • 0

#529 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 04 мая 2020 - 20:05

откуда вы взяли Plane cursor ?

Хотя проблему можно обойти разными способами, она является концептуальной. На 2д экране у нас только 2 координаты. 3-ю надо откуда-то взять.
В ортогональных проекциях мы ее просто ставим в 0.
А на изометрической (или на перспективной) она может быть любой по глубине, располагаясь на луче, который идет из камеры через курсор на 2д экране.
Почему вы взяли именно эту глубину для "Plane cursor" ?

 


  • 0

#530 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 04 мая 2020 - 20:32

откуда вы взяли Plane cursor ?

Хотя проблему можно обойти разными способами, она является концептуальной. На 2д экране у нас только 2 координаты. 3-ю надо откуда-то взять.
В ортогональных проекциях мы ее просто ставим в 0.
А на изометрической (или на перспективной) она может быть любой по глубине, располагаясь на луче, который идет из камеры через курсор на 2д экране.
Почему вы взяли именно эту глубину для "Plane cursor" ?

 

Это не я взял. Я просто вижу по координатам где находится курсор. А в акаде я могу прям поставить СК "по экрану" и все будет рисоваться именно на этой плоскости.

Вы вот сказали типа можно координаты курсора в 3д добавить. А какие его координаты вы хотите показывать когда он "в молоке"?

В DS они сделали так, что в 3д окне тоже можно двигать точки, им пришлось ввести орто-отслеживания, которые переключаются в зависимости от угла поворота модели. Но вот нужно ли на данном этапе все так усложнять-весьма спорно. Эксперименты с обрезкой сейчас намного актуальнее.

Прикрепленные изображения

  • DS_point_orto_xy.JPG
  • DS_point_orto_xz.JPG
  • DS_point_orto_yz.JPG

  • 0

#531 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 04 мая 2020 - 21:44

Это не я взял. Я просто вижу по координатам где находится курсор. А в акаде я могу прям поставить СК "по экрану" и все будет рисоваться именно на этой плоскости.

Вы вот сказали типа можно координаты курсора в 3д добавить. А какие его координаты вы хотите показывать когда он "в молоке"?

В DS они сделали так, что в 3д окне тоже можно двигать точки, им пришлось ввести орто-отслеживания, которые переключаются в зависимости от угла поворота модели. Но вот нужно ли на данном этапе все так усложнять-весьма спорно. Эксперименты с обрезкой сейчас намного актуальнее.

т.е. ДШ взяли плоскость ближайшей точки?

когда он "в молоке" - ничего не показывать

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

с обрезкой даже эксперименты очень трудемки, т.к. много до/перестраивать.
надо определиться концептуально, как будет выглядеть программа, что она будет делать, почему нужна обрезка и без нее "ну никак"...
для этого нужен документ фанкшнл спекс ... ну мы писали уже...


 


  • 0

#532 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 04 мая 2020 - 23:29

1.т.е. ДШ взяли плоскость ближайшей точки?

2.когда он "в молоке" - ничего не показывать

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

3.с обрезкой даже эксперименты очень трудемки, т.к. много до/перестраивать.
надо определиться концептуально, как будет выглядеть программа, что она будет делать, почему нужна обрезка и без нее "ну никак"...
для этого нужен документ фанкшнл спекс ... ну мы писали уже...


 

1.Нет, не ближайшей, а плоскости проходящей через начало координат и параллельной экрану ( перпендикулярно вектору взгляда).

Вот как в акаде она выглядит (эта плоскость).На ней нарисован круг с центром 0 нормалью по виду.

2.понял, ничего не показывать конечно можно, но они пошли по общепринятому пути. Хотя и не задействовали эту плоскость в полной мере.

Я думаю если делать редактирование в 3д окне, то уже полноценное, если мы до этого дойдем. А пока и так норм.

3.Ну я пока хочу даже не переделывать код, а прикинуть какие опереции нам нужно сделать для получения результата, и что из этого в ФШ уже есть, а что нужно будет добаваить.А потом уже оценивать трудоемкость. Просто на этом уровне я не разберусь в коде.

Документ постепенно заполняется. Просто много зависит от того насколько удается разобраться. Разбираю код, там число ПИ постоянно в множителях, хотя по идее алгоритм чисто геометрический должен быть.

Прикрепленные изображения

  • acad_view_world.JPG
  • acad_view_disp.JPG
  • acad_circ_world.JPG

  • 0

#533 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 05 мая 2020 - 01:52

1.Нет, не ближайшей, а плоскости проходящей через начало координат и параллельной экрану ( перпендикулярно вектору взгляда).

Вот как в акаде она выглядит (эта плоскость).На ней нарисован круг с центром 0 нормалью по виду.

2.понял, ничего не показывать конечно можно, но они пошли по общепринятому пути. Хотя и не задействовали эту плоскость в полной мере.

Я думаю если делать редактирование в 3д окне, то уже полноценное, если мы до этого дойдем. А пока и так норм.

3.Ну я пока хочу даже не переделывать код, а прикинуть какие опереции нам нужно сделать для получения результата, и что из этого в ФШ уже есть, а что нужно будет добаваить.А потом уже оценивать трудоемкость. Просто на этом уровне я не разберусь в коде.

Документ постепенно заполняется. Просто много зависит от того насколько удается разобраться. Разбираю код, там число ПИ постоянно в множителях, хотя по идее алгоритм чисто геометрический должен быть.

1,2. А, понятно. Так тоже можно.

 

3. Проще описать и понять то, что в программе нужно, а потом уже смотреть, есть оно внутри или нет. Называется Gap Analysis.

Если идти наоборот, то гоооораздо сложнее. И если функционала нет или он не такой, то уже оценивать трудозатраты на добавление/переделку. А потом уже смотреть по нужности и трудоемкости, что нужно и можно делать, а за что не стоит пока браться. Т.н. расставить приоритеты.

 

Пока что у нас приоритеты следующие:

1 - выбор грани по поверхности - почти сделал. Осталось сделать вывод координат по клику. Вывод при просто движении мыша может быть слишком дорогим на больших моделях. Или надо его делать в отдельном потоке и обрывать поиск, когда мышь сдвинулась. Но многопоточность это сложно. Я подумаю... Пока сделаю по клику.

 

2 - локальное редактирование координат УВ. Это реально ускорит программу на больших и средних проектах.

Да, вы разберитесь с корректировочной формулой. Можно будет добавить в рамках этой задачи.

 

3 - OpenGL - реальное ускорение отрисовки, красивое качество, и крутые эффекты типа металл. В будущем возможно анимация поведения судна при качке, крене и тп.

 

4 -  Гидростатика. Она улучшена Тимошенко. Но есть куда двигаться сделав ее динамичной. Например считать развесовку слоев и по ней ЦТ, а по нему и корпусу динамически считать осадки/крены/дифференты... А не как сейчас - осадка задается в проекте. Задаваться должен например балласт. Да и то наверное лучше, чтобы он рисовался в чертеже.

 

 


  • 0

#534 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 05 мая 2020 - 03:05

а)Проще описать и понять то, что в программе нужно, а потом уже смотреть, есть оно внутри или нет. Называется Gap Analysis.

Если идти наоборот, то гоооораздо сложнее. И если функционала нет или он не такой, то уже оценивать трудозатраты на добавление/переделку. А потом уже смотреть по нужности и трудоемкости, что нужно и можно делать, а за что не стоит пока браться. Т.н. расставить приоритеты.

 

Пока что у нас приоритеты следующие:

1 - выбор грани по поверхности - почти сделал. Осталось сделать вывод координат по клику. Вывод при просто движении мыша может быть слишком дорогим на больших моделях. Или надо его делать в отдельном потоке и обрывать поиск, когда мышь сдвинулась. Но многопоточность это сложно. Я подумаю... Пока сделаю по клику.

 

2 - локальное редактирование координат УВ. Это реально ускорит программу на больших и средних проектах.

Да, вы разберитесь с корректировочной формулой. Можно будет добавить в рамках этой задачи.

 

3 - OpenGL - реальное ускорение отрисовки, красивое качество, и крутые эффекты типа металл. В будущем возможно анимация поведения судна при качке, крене и тп.

 

4 -  Гидростатика. Она улучшена Тимошенко. Но есть куда двигаться сделав ее динамичной. Например считать развесовку слоев и по ней ЦТ, а по нему и корпусу динамически считать осадки/крены/дифференты... А не как сейчас - осадка задается в проекте. Задаваться должен например балласт. Да и то наверное лучше, чтобы он рисовался в чертеже.

а) Так то что обрезка нужна, сомнений нет. Без нее ни о каких полноценных проектах речи вообще не идет. Описание я уже приводил. Внутри оно тоже есть, только не объединено под конкретную задачу. Но все основные функции присутствуют. Вот хотелось бы определить что нужно чтоб собрать их  воедино.

В общем я сделаю модели, пройду по шагам со скринами, а там вы посмотрите уже какими алгоритмами эти шаги делаются.

По приоритетам.

1.Вывод по клику координат-это что?Не очень понял.

2.С формулой постараюсь. По коду буду спрашивать непонятные моменты.Ускорять уже можно потом, сейчас оно не нужно.

3,4. И да и нет.Оно все круто, и это можно и интересно сделать. Но! делать красиво грубую заготовку смысла не имеет, а тратить кучу времени чтоб сделать какой нить проект "большой красивый" типа того что делают дельшиповцы, но при этом не имеющий никакой  технической ценности-это тратить время попусту.

Поэтому куда не кинь-обрезка и нюрбс становятся первоочередными задачами, позволяющими уже двигаться к  названным вами перспективам. 

Я специально много  описываю инструменты ДШ и МС, вы все время получается выстраиваете приоритеты вдогонку ДШ(смысл просто его догонять?), хотя есть шанс сделать более продвинуто чем обе эти программы (даже еще и боле чем РИНО применительно к лодкам).


  • 0

#535 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 05 мая 2020 - 04:28

сделал 3д координаты на плоскости проходящей через начало координат и параллельной экрану ( перпендикулярно вектору взгляда).

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


  • 0

#536 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 05 мая 2020 - 05:14

сделал 3д координаты на плоскости проходящей через начало координат и параллельной экрану ( перпендикулярно вектору взгляда).

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

Функции с понятием 3dPlane в ФШ часто проскаивают. Я думаю там вообще практически все атрибуты стандартной для сапр геометрии должны быть. Принципы то в общем одинаковы. Но пока функций рисования нет всякими динамическими плоскостями нет смысла особо  заниматься.


  • 0

#537 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 05 мая 2020 - 05:25

В коде коэффициенты присваиваются по условию, наверное в корректоре ДШ так же сделано, поэтому не бъется нифига.

Разбираюсь что за nt , ng, и за каким здесь все таки число ПИ в расчетах :) .

Прикрепленные изображения

  • average_code.JPG

  • 0

#538 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 05 мая 2020 - 17:00

FFaces.Count - кол-во граней у УВ

Nt - кол-во треугольных граней у УВ

Nq - кол-во нетреугольных граней у УВ

 

дальше читайте if-ы ;)


  • 0

#539 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 05 мая 2020 - 21:25

FFaces.Count - кол-во граней у УВ

Nt - кол-во треугольных граней у УВ

Nq - кол-во нетреугольных граней у УВ

 

дальше читайте if-ы ;)

Читаю.С переменным успехом :) . Забываю каждый раз  простые вещи. Вот это условие как будет? стр45, if P=self, чем точка должна быть?

Прикрепленные изображения

  • self.JPG

  • 0

#540 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 05 мая 2020 - 22:27

По разному, если P это сама точка, должна быть 1/4 если другая, то 3/8.

Берется УВ - "Точка" как обьект. Для этого обьекта вызывается метод (Average?). В рамках данного метода "Точка" есть self, тк обьект ее.
Метод берет все грани этой точки, потом для каждой грани Face берутся все ее точки по очереди в P.
Т.е. у каждой грани одна из точек будет наша "Точка", т.е. self. Вот это и проверяется. Если P=self это значит P есть сама "Точка".
 


  • 0

#541 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 06 мая 2020 - 00:41

По разному, если P это сама точка, должна быть 1/4 если другая, то 3/8.

Берется УВ - "Точка" как обьект. Для этого обьекта вызывается метод (Average?). В рамках данного метода "Точка" есть self, тк обьект ее.
Метод берет все грани этой точки, потом для каждой грани Face берутся все ее точки по очереди в P.
Т.е. у каждой грани одна из точек будет наша "Точка", т.е. self. Вот это и проверяется. Если P=self это значит P есть сама "Точка".
 

Понял, тут этот self  везде присутствует.Не очень уловил что в итоге получили. Считем мы вроде по граням (стр34), которые либо 3-уг либо 4-уг. Если  условие стр38 (52)-да  то мы плюсуем nt, считаем  center, и присваиваем weight? переходим на следующую, опять смотрим условия..складывают все вроде в стр65-68. Т.е. на выходе у нас Result, TotalWeight и nt как данные для расчета ниже?

Прикрепленные изображения

  • average_code.JPG

  • 0

#542 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 06 мая 2020 - 02:13

Понял, тут этот self  везде присутствует.Не очень уловил что в итоге получили. Считем мы вроде по граням (стр34), которые либо 3-уг либо 4-уг. Если  условие стр38 (52)-да  то мы плюсуем nt, считаем  center, и присваиваем weight? переходим на следующую, опять смотрим условия..складывают все вроде в стр65-68. Т.е. на выходе у нас Result, TotalWeight и nt как данные для расчета ниже?

Да. Ниже Result уточняется с учетом кол-ва разных граней.

 

 

> a := 5 / 3 - 8 / 3 * sqr(3 / 8 + 1 / 4 * cos(2 * Pi / FFaces.Count));

Я вижу тут можно оптимизировать сделав табличку с несколькими насчитанными значениями для разных FFaces.Count.

Сделаю для 8. А если больше, то по формуле.


  • 0

#543 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 06 мая 2020 - 02:54

Да. Ниже Result уточняется с учетом кол-ва разных граней.

 

 

> a := 5 / 3 - 8 / 3 * sqr(3 / 8 + 1 / 4 * cos(2 * Pi / FFaces.Count));

Я вижу тут можно оптимизировать сделав табличку с несколькими насчитанными значениями для разных FFaces.Count.

Сделаю для 8. А если больше, то по формуле.

в смысле для 8-ми? тут же всего три варианта


  • 0

#544 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 06 мая 2020 - 03:06

почему 3?

А если зонтик нарисовать?

 

кстати я изменил закрашивание подводных частей.

сейчас это цвет слоя, смешанный с полупрозрачным цветом подводной части.

в настройки среды добавил полупрозрачность цвета подводной части.

А то когда слои подводой непонятно, что где.

 

тут малиновым другой слой. а желтоватым подсветка выбранной грани.

 

Прикрепленные изображения

  • Screenshot_2020-05-05_19-16-54.png

Сообщение отредактировал mm7: 06 мая 2020 - 03:18

  • 0

#545 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 06 мая 2020 - 03:44

почему 3?

А если зонтик нарисовать?

 

кстати я изменил закрашивание подводных частей.

сейчас это цвет слоя, смешанный с полупрозрачным цветом подводной части.

в настройки среды добавил полупрозрачность цвета подводной части.

А то когда слои подводой непонятно, что где.

 

тут малиновым другой слой. а желтоватым подсветка выбранной грани.

А, понял. вы про количество граней для 1 точки..

Подводная часть прикольная получилась.

А выбор цвета выбора можно сделать? А то вот желтый он не очень удобен. У меня есть много проектов желтоватых цветов .А вот фиолетовую лодку точно рисовать не будешь :)


  • 0

#546 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 06 мая 2020 - 04:26

выбор цвета выбора - можно. но надо делать...


  • 0

#547 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 06 мая 2020 - 22:25

выбор цвета выбора - можно. но надо делать...

так есть уже - Menu File -> Preferences-> [Graphics] Selected Items

 


  • 0

#548 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 06 мая 2020 - 22:48

так есть уже - Menu File -> Preferences-> [Graphics] Selected Items

 

Точно :) .Вот что значит не задумывался даже.В Максюрфе смотрю в новой версии еще и полупрозрачными выбранные элементы делают.Чтоб в закрытые поверхностью точки попадать.

 

Только цвет выбора в ФШ меняет сразу цвет выбора  всего. и точек и ребер и граней.А хочется как раз разделить, точки-ребра желтым, а грани -другим. 

Прикрепленные изображения

  • MS_select_transp.JPG

Сообщение отредактировал a_max: 07 мая 2020 - 00:19

  • 0

#549 mm7

mm7

    Рулевой 1-го класса

  • Основной экипаж
  • PipPipPipPipPipPip
  • 473 сообщений
  • Из:Вудбридж
  • Судно: виндфойл доска

Отправлено 07 мая 2020 - 02:29

У нас тоже видно и точки и ребра

Прикрепленные изображения

  • Screenshot_2020-05-06_18-29-21.png

  • 0

#550 a_max

a_max

    Яхтенный капитан

  • Капитан
  • 2 846 сообщений
  • Из:moscow

Отправлено 07 мая 2020 - 02:38

У нас тоже видно и точки и ребра

Круто! Смысл нововведения то в общем в том. что я сеткой например никогда не пользуюсь при редактировании. Она вообще по идее нафиг не нужна, но вот когда надо грани в слой собрать ее приходится включать. При этом перспектива всегда почти включена в теневом режиме. Теперь в сетку вообще переключаться не придется.


  • 0



Ответить



  


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей