forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные! (http://forum.boolean.name/showthread.php?t=7558)

ELIAS 04.01.2009 13:55

Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Вообщем есть необходимость зеркально отображать меши... ВСМЫСЛЕ НЕ ЗЕРКАЛО РЯДОМ СТАВИТЬ, А ВСЕ ВЕРШИНЫ МЕША ОТРАЖАТЬ ОТНОСИТЕЛЬНО ПРЯМОЙ(КАКОЙ ЛИБО ИЗ ОСЕЙ - X Y Z).

Делаю так:
ScaleMesh ent, -1,1,1 : FlipMesh ent
*И в названии темы пробелы надо убрать..стормозил что-то(((
Отображается то всё верно, но нормали расставляются неправильно!!! Просто ужасно! Вообще в блитце с нормалями дела обсоят ужасно! Что с ними постоянно происходит??? Из 3дмакса они экспортятся неправильно приходится каждому объекту ресетиксворм применять... Отразить объект зеркально никак нельзя...Я уже устал с заморачиваться с Нормалями в блитце! :wallbash:
Кстати в самом 3дмаксе есть аналог этого что я делаю...Назвается Mirror. Дак в нём после этой команды все нормали сохраняются как надо!!!
Кстати в этой ситуации даже updatenormals ent - не помогает!!!
Вообще UpdateNormals - самая уродская функция в блитце... Она сглаживает все нормали у меша так будто ты применил в максе к ним модификатор smooth.
Вообщем помогите разобраться пожалуйста...Что тут можно сделать?

HolyDel 04.01.2009 22:33

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
отрази нормали вручную.

пишу с браузера, такчто могут быть ошибки, но идея вроде как норм:
Код:

for i = 0 to countvertices(surf)-1
SetVertexNormal surf,i,-VertexNX(surf,i),-VertexNY(surf,i),-VertexNZ(surf,i)
next

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

ELIAS 05.01.2009 13:15

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
HolyDel, ничего не получается! SetVertexNormal - это просто VertexNormal. Вот я пишу
Код:

If KeyHit(16)=1
For i = 0 To CountVertices(videlen)-1
VertexNormal videlen,i,-VertexNX(videlen,i),-VertexNY(videlen,i),-VertexNZ(videlen,i)
Next
EndIf

И вообще ничего не происходит... videlen - это объект который выделяется мышкой((( Вот это вообще странно, всё таки что-то команда должна делать, а тут! НИЧЕГО АБСОЛЮТНО!...ничего непонятно.(((

moka 05.01.2009 13:23

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Могу предположить что videlen - является не сюрфейсом, поэтому и цикл будет нулевым, и ничего не просчитается.
Тебе нужно перелистать все Сюрфейсы Меша, и провести для них данную операцию.

ELIAS 05.01.2009 15:26

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Даа, MoKa! Скорее всего так оно и есть!!! Только скажи плиз как это сделать...пересчитать сурфейсы... и лучше кодом, MoKa. либо скажи точное название команд. Очень благодарю! :)

moka 05.01.2009 16:01

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Все команды есть в справке, наводка на категорию списка всех комманд, также интуитивна понятна. Прежде чем задавать вопрос, соизвольте сами попытаться на него ответить.

ELIAS 05.01.2009 19:11

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Теперь делаю так:
Код:

If KeyHit(16)=1
        For t = 1 To CountSurfaces(videlen)
                tsurf=GetSurface(videlen,t)
                For i = 0 To CountVertices(videlen)-1
                        VertexNormal tsurf,i,-VertexNX(tsurf,i),-VertexNY(tsurf,i),-VertexNZ(tsurf,i)
                Next
        Next
EndIf

результат опять же нулевой(((
зы: а чем сурфейс отличается от меша???:)

moka 05.01.2009 19:41

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
ELIAS, невнимательность причина 98,2% ошибок программиста.
Наводка: Перечитайте свой код внимательно, учитывая правильность входящих данных для функций.

ELIAS 05.01.2009 20:50

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Разобрался, всем спасибо

ELIAS 06.01.2009 23:10

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Сорри сорри...оффтоп конечно, но кину сюда этот вопросик ГлУУпыЙ.)))

Как мне всем всем объектам в сцене изменить какое нибудь свойство??? Вопрос в том как мне ко всем им обратиться сразу??? Цикл надо создавать, я думаю, но какой? Даже трудно пример сказать, ну вот мне например при выделении какого то определённого объекта в сцене мышкой, нужно включать опцию entitypickmode ent, 0 чтобы кроме этого объекта больше никакие не выделялись! Это дурно звучит но в моём случае именно так надо делать, изменить это свойство всем ентити в сцене)))

moka 10.01.2009 15:05

Ответ: Scale mesh ent, -1,1,1 : Flip mesh ent ; Нормали неправильные!
 
Ответь на свой вопрос, рассуждая логически, и придираясь к каждому слову, Обдумывая. Могу попробовать за тебя, но улови суть, и не задовай более подобных вопросов.

Цитата:

Как мне всем всем объектам в сцене изменить какое нибудь свойство???
Тоесть тебе нужны ВСЕ объекты в сцене. Изучив справку, мы не найдём интерфейса который предназначен для получения ВСЕХ объектов сцены.
Короче говоря блиц этого не умеет, значит дело за тобой делай ручками. Мысль не продолжу, если спросишь "как" по ушам бы надовал, только я не ценцей и совсем далеко от тебя.

Цитата:

Цикл надо создавать, я думаю, но какой?
Лезишь нарожом, но предположение верное, вопрос "какой?" ответь сам, исходя из мысли относительно прошлой цитаты.

Насчёт любого случая: опыт и развитие способностей, даст тебе возможность "генерировать" на ходу алгоритмы и методы решения задач, прямо в голове, взвешивая их, ты выбираешь самый подходящий. Процесс выбора, эм.. даже скорее "отсева" варриантов, проходит опять через твои знания, опыт и способности, в плане оценки ресурсозатрат, как на работу алгоритма, так и на реализацию его, на возможности которые есть (хотя обычно они упираются в невозможности по причине неопытности и недостатка способностей и знаний).
Короче говоря, если будешь и дальше задовать вопросы, не пытаясь досканально их переживать и отвечать на них сам. То ты бросишь совсем скоро это занятие, сожелея о "потраченом" времени, и будешь проклинать всё с этим связанное.

Удачи.


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

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