Nano Hash - криптовалюты, майнинг, программирование

Использование шейдера 3D Studio Max DirectX в задаче XNA

ОБНОВЛЕНИЕ 2: теперь кажется, что это больше проблема моделирования, чем проблема программирования. Упс.

Я новичок в разработке XNA, и, несмотря на мой опыт работы с C#, я застрял на одном месте уже два дня.

Ситуация: Я создал модель в 3D Studio Max 2010, в которой используются два материала, оба типа DirectX Shader. Модель экспортируется в FBX без ошибок, и Visual Studio правильно ее компилирует. Когда я изначально запустил метод Draw(), он выдал исключение в части «BasicEffect» одного из моих циклов, демонстрируя (по крайней мере мне), что он правильно загружает файл .fx, который должен быть встроен в FBX. файл или что-то в этом роде.

Проблема: при использовании следующего кода

    foreach (ModelMesh mesh in map.Meshes)
    {
        foreach (Effect effect in mesh.Effects)
        {
            effect.CurrentTechnique = effect.Techniques["DefaultTechnique"];
            effect.Begin();
            effect.Parameters["World"].SetValue(Matrix.CreateTranslation(Vector3.Zero));
            effect.Parameters["View"].SetValue(ActiveCamera.ViewMatrix);
            effect.Parameters["Projection"].SetValue(ActiveCamera.ProjectionMatrix);
            effect.Parameters["WorldViewProj"].SetValue(Matrix.Identity * ActiveCamera.ProjectionMatrix);
            effect.Parameters["WorldView"].SetValue(Matrix.Identity * ActiveCamera.ViewMatrix);

            foreach (EffectPass ep in effect.CurrentTechnique.Passes)
            {
                ep.Begin();
                // something goes here?
                ep.End();
            }

            effect.End();
        }

        mesh.Draw();
    }

Единственное, что происходит, это появление белого прямоугольника, закрывающего нижнюю половину экрана, независимо от положения или угла камеры. Я получил имя параметра эффекта из файла default.fx, указанного в Max (он находится в папке [program files]\autodesk\3ds Max 2010\maps\fx).

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

Любая помощь или идеи?

ОБНОВЛЕНИЕ: внося следующие изменения:

    effect.Parameters["WorldViewProj"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix * Conductor.ActiveCamera.ProjectionMatrix);
effect.Parameters["WorldView"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix);

Модель умела рисовать. Однако все совершенно белое :(

22.12.2009

Ответы:


1

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

Я предлагаю начать с более простого теста. Сделайте коробку, примените очень простой шейдер... и сделайте этот рендер. Затем добавьте какой-нибудь параметр, который (например) умножает красный компонент пиксельного шейдера на переданную величину. И сделайте этот рендеринг успешным.

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

Мне очень интересно узнать, как это происходит ... обязательно прокомментируйте это, как только вы это исправите, чтобы я увидел результат. Удачи! :-)

22.12.2009
  • Поработав прошлой ночью, я обнаружил, что мой код работает более или менее и что это проблема модели, а не кода. Поэтому, как только я выясню, как это правильно сделать, я опубликую результаты: P 22.12.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..