Войти
Unreal EngineФорумОбщее

Разные мелкие вопросы (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
7:49, 4 янв. 2021
чтобы получить чёткую картинку, надо просто не разводить мыло. если ты его уже развёл, то никаким постпроцессом это уже не исправить.

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


#16
(Правка: 7:54) 7:52, 4 янв. 2021

pixelperfect_
ну так значит отключай настройки, которые развозят тебе это мыло: дофы, блумы, моушенблюры, TAA и прочий отстой, если тебе нужна чёткая картинка. исправлять мыло sharpen filter'ом — это как в машину мочу залить вместо бензина, а потом присадками "подправлять", чтобы двигатель нормально себя чувствовал.

тьюториал на прошлой странице шикарный, в лучших традициях полчаса объяснять, какие ноды и как соединять, не объясняя, собственно, что они делают и зачем. классика.

#17
8:13, 4 янв. 2021

Suslik
> исправлять мыло sharpen filter'ом — это как в машину мочу залить вместо
> бензина, а потом присадками "подправлять", чтобы двигатель нормально себя
> чувствовал.
ну это первое что мене пришло в голову - sharpen
и вдруг UE это тот единственный опытный образец машины, которая ездит на воде(водороде), может моча тоже прокатит? надо же все проверить
Suslik
> не объясняя, собственно, что они делают и зачем. классика.
по-мойму сейчас подавляющее кол-во туторов такие. 

#18
8:17, 4 янв. 2021

pixelperfect_
> по-мойму сейчас подавляющее кол-во туторов такие. 
именно поэтому учиться графике по анриал/юнити туториалам — это полный зашквар. учиться нужно отдельно графике и потом просто потыкать мышью по анрилу, чтобы понять, как это на его примере реализовать. sharpen filter абсолютно везде реализуется одинаково и избегают его тоже везде одинаково, лол.

#19
(Правка: 9:49) 8:28, 4 янв. 2021

Suslik
> читься нужно отдельно графике и потом просто потыкать мышью по анрилу
ага и убить для этого пол жизни) лучше уж потыкаться в унрыл мышкой, метод научного тыка никто не отменял! в основном все открытия в науке так и делались, походу либо случайно - "тыкались"

да и хрен с ним с sharpen, у меня сейчас более насущные задачи возникли, более приземленые что-ли. А тема своим развитием явно не помогает их решить.

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

#20
9:48, 4 янв. 2021

так-с с последним разобрался...
оказывается нужно завести фиелд AActor чтобы прокинуть в свойство объект из вьюпорта!

UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class BLANKPROJECT_API UPointerComponent : public UActorComponent
{
  GENERATED_BODY()

public:  
  // Sets default values for this component's properties
  UPointerComponent();

  UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pointer")
  class AActor* PointerMesh;

#21
9:54, 4 янв. 2021

как можно исключить объект(ы) из GetWorld()->LineTrace....?

У меня пойнтер компонет просто рейкастит по нажатию мыши мир.
и попадает на сферу которую я использую как указатель для Hit.impactPos.
как мне её исключить из рейкаста?

// Called every frame
void UPointerComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
  Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

  // ...
  APlayerController* controller = UGameplayStatics::GetPlayerController(GetWorld(), 0);
  if (!controller) return;


  if (controller->IsInputKeyDown(EKeys::LeftMouseButton))
  {


    FVector2D viewSize;

    GetWorld()->GetGameViewport()->GetViewportSize(viewSize);

    float mouseX = viewSize.X * 0.5f;
    float mouseY = viewSize.Y * 0.5f;

    controller->SetMouseLocation(mouseX, mouseY);

    {
      //UE_LOG(LogTemp, Warning, TEXT("Mouse button!!"));

      FVector worldLocation;
      FVector worldDirection;

      controller->DeprojectMousePositionToWorld(worldLocation, worldDirection);
      
      // Trace World
      {
        FVector TraceStart = worldLocation + worldDirection * 100.0f; // add start offset
        FVector TraceEnd = worldLocation + worldDirection * 1000.0f; 

        ECollisionChannel TraceChannel = ECollisionChannel::ECC_PhysicsBody;

        FHitResult Hit;
        if (GetWorld()->LineTraceSingleByChannel(Hit, TraceStart, TraceEnd, TraceChannel))
        {
          if (Hit.Actor.IsValid())
          {
            //UE_LOG(LogTemp, Warning, TEXT("We hit something!!! %0.2f %0.2f %0.2f"), Hit.ImpactPoint.X, Hit.ImpactPoint.Y, Hit.ImpactPoint.Z);

            DrawDebugLine(GetWorld(), Hit.ImpactPoint, Hit.ImpactPoint + FVector::UpVector * 20.0f, FColor::Green, false, 5.0f, 255, 1.0f);
            
            // set box pos to hit
            TM.SetLocation(Hit.ImpactPoint);
            
            if (PointerMesh)
              PointerMesh->SetActorTransform(TM);
          }
        }
      }  
    }
  }
}
#22
9:58, 4 янв. 2021

Эммм
ECollisionChannel TraceChannel = ECollisionChannel::ECC_PhysicsBody;

#23
10:02, 4 янв. 2021

Salamandr
> Эммм
> ECollisionChannel TraceChannel = ECollisionChannel::ECC_PhysicsBody;
Ииии? там только один флаг можно задать за раз | - не прокатит, exclude параметра вообще нет!
мб я не той функцией пользуюсь?

#24
(Правка: 10:06) 10:05, 4 янв. 2021

pixelperfect_
Но сам объект в сцене может находится в нескольких. Или там не находится.

#25
(Правка: 10:17) 10:12, 4 янв. 2021

а, ты предлагаешь его исключить из всех физ. групп или что там в UE? убрать коллизию, надо глянуть  что и как...

Salamandr
это успех! спасибо друг! ты видимо хорошо шаришь в UE?

#26
10:40, 4 янв. 2021

pixelperfect_
Дык в профиле всё написано.

#27
(Правка: 11:36) 11:30, 4 янв. 2021

Salamandr
> Дык в профиле всё написано.
ну да, точно!

А всякую техническую фигню типа дверей, механизмов, различную технику ты как оживляешь/трансформируешь в UE?
В смысле у тебя это отдельные объекты, меши или один скелетал и UPoseableMeshComponent?
Я танк сделал на костях, думал будет проще, походу было бы проще сделать отдельными объектами.
Хочу чтобы они по некоторой позиции в world space, крутили свои башенки и стреляли.

Как мне енумернуть всю сцену и раздать всем танками корды? мне интерфейс нужно заводить? 
типо как тут

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#28
(Правка: 12:25) 12:11, 4 янв. 2021

pixelperfect_
> А всякую техническую фигню типа дверей, механизмов, различную технику ты как
> оживляешь/трансформируешь в UE?
Всё зависит от сложности двери, её анимации. Делать костями проще с любой точки зрения, в этом нет ничего плохого. Но тем самым ты переносишь задачу на видеокарту (GPU) снимая её с CPU. Надо так чтобы нагрузка была везде примерно одинаковой (но у всех разные видео карты и процессоры, так что ничего плохого думаю не будет, если где то будет больше). Лучше всего подготавливать разные варианты под разные настройки заранее. Чтобы игрок сам выбрал как ему удобнее.
Если ты прям 100% уверен в успешности проекта и собираешься на него потратить лет 10 и доведешь дело до логического конца, то делать лучше сразу правильно. В противном случае, лучше делать то что быстрее.
Ну и надо понимать что например анимацию тяжелее контролировать (нужен отдельный блупринт). Если требуется что-то больше чем запустить анимацию, остановить. Лучше делать это напрямую через трансформации (перемещение, поворот и т.д.), то есть без анимаций (или совмещать по мере необходимости).

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

> Как мне енумернуть всю сцену и раздать всем танками корды?
не понял вопроса, Spawn Actor?

> мне интерфейс нужно заводить?
это скорее к тебе вопрос

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

#29
(Правка: 13:03) 13:01, 4 янв. 2021

Salamandr
> не понял вопроса, Spawn Actor?
что-то типо такого надо... но оно не работает(

void UPointerComponent::SendMessageToAllTanks(FVector pos)
{
  //UWorld* world = GetWorld();
  //TActorIterator<AActor> Iterator(world, ATankActor::StaticClass());
  //for (; Iterator; ++Iterator)
  //{
  //  ATankActor* Tank = Cast<ATankActor>(*Iterator);
  //  GEngine->AddOnScreenDebugMessage(-1, 30.f, FColor::Yellow, Tank->GetFName().ToString());  //Print name of the Actor
  //   //another code
  //}

  FActorIteratorState* Iterator = new FActorIteratorState(GetWorld(), TSubclassOf<AActor>());
  if (Iterator)
  {
    for (; Iterator; ++Iterator)
    {
      ATankActor* tank = Cast<ATankActor>(Iterator->CurrentActor);
      if (tank)
        GEngine->AddOnScreenDebugMessage(-1, 30.f, FColor::Yellow, tank->GetFName().ToString());  //Print name of the Actor

    }

    delete Iterator;
  }
}

что TSubclassOf<AActor>() что TSubclassOf<ATankActor>() пустой итератор!(( и двиг крашится, опять(

а комменченный вариант не работает, я не знаю где сидит TActorIterator.h (


>нужен отдельный блупринт
пока не касался их слишком сложно для меня((

Страницы: 1 2 3 4 5 Следующая »
Unreal EngineФорумОбщее