 |
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
06.02.2013, 01:31
|
#1261
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Где можно глянуть список всех функций для CG(шейдера)?
Что-то не вспомню как остаток от деления вычислить.
|
(Offline)
|
|
06.02.2013, 07:20
|
#1262
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
06.02.2013, 17:49
|
#1263
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопросы от новичка
Кто-нибудь пробовал выводить rendertexture на экран через GUI.DrawTexture? Дело в том, что мне надо отрендерить за пределами сцены модель, а потом полученную текстуру поместить на экране, и самое поганое - чтобы отрендеренная модель на этой текстуре отображалась нормально, но была с полностью прозрачным фоном.
Пока нашел два варианта. Первый - самый простой - просто вывести текстуру на экран. В этом случае фона от рендера позади отрендеренной модели не видно, но сама текстура будто с альфой 0.5
Затем нашел популярный скрипт с шейдером и пострендером, который вырубает у рендер текстуры альфу вообще - тогда модель на этой рендер текстуре становится без альфы, но при этом у самой текстуры начинается рендериться "пустой синий фон" позади модели
Вот как бы добиться рендера на подобии такого http://portal.aecorp.in/wp-content/u...-Selection.jpg
Когда модель рендерится поверх GUI, но при этом она не прозрачная, НО с прозрачным фоном, через который видно GUI-окно позади нее
Уже мозг сломал, пытаясь решить проблему
|
(Offline)
|
|
06.02.2013, 17:54
|
#1264
|
Элита
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений (для 3,923 пользователей)
|
Ответ: Вопросы от новичка
А не пробовал снимать рендер текстуры с камеры, которая рендерит только нужную модель? Настроить модели определенный слой, и камере поставить только рендеринг этого слоя.
|
(Offline)
|
|
06.02.2013, 18:00
|
#1265
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от Nuprahtor
А не пробовал снимать рендер текстуры с камеры, которая рендерит только нужную модель? Настроить модели определенный слой, и камере поставить только рендеринг этого слоя.
|
Я именно так и рендерю. И камера у меня рендерит по сути только одну модель, позади модели в рендер попадает лишь "обще-мировой" фон, который определяется через clear flag камеры (например Color или SolidColor). И все бы хорошо - в рендер текстуре этот фон получается совершенно прозрачным. Вот только отрендеренная модель при этом так же прозрачна (хотя на сцене она вообще с шейдером Diffuse), будто в сцене перед рендером кто-то выставил альфу 0.5
То есть смотри приведенный мной скрин из дьяблы - представь что модель монаха на нем просвечивает будто с альфой 0.5 и сквозь нее видно гуишное окно
Если же я тем хитрым скриптом вырубаю альфу у рендер текстуры - то помимо уже ставшей нормальной модели на рендер текстуре проявляется и тот самый фон камеры, описанный в clear flag. То есть опять же - посмотри на этот скрин из дьяблы и представь, что монах стал "плотным", не прозрачным, но при этом он висит на черном или синем фоне на всю площадь отображенной через гуи рендер-текстуры (как если бы ты картинке с прозрачным фоном в фотошопе поставил не прозрачный бэкграунд)
|
(Offline)
|
|
06.02.2013, 20:23
|
#1266
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
А зачем GUI.DrawTexture? Просто выключи камеру, рендерящую модель и прям в OnGUI вызови camera.Render() предварительно задав ей pixelRect. Это можно сделать только в событии Repaint.
|
(Offline)
|
|
06.02.2013, 22:13
|
#1267
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от pax
А зачем GUI.DrawTexture? Просто выключи камеру, рендерящую модель и прям в OnGUI вызови camera.Render() предварительно задав ей pixelRect. Это можно сделать только в событии Repaint.
|
У меня GUI-окна могут в любом порядке перекрывать окно с отрендеренным персонажем
В принципе уже разобрался с проблемой - пришлось немного подшаманить сам шейдер модели. Уже не думал, что именно в нем затык был
|
(Offline)
|
|
07.02.2013, 00:06
|
#1268
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
На объекте Player висит скрипт:
public class Door : MonoBehaviour {
public Animation d;
void Start ()
{
d=GetComponentInChildren<Animation>();
d.animation.Play("1");
}
}
Как запустить анимацию?
__________________
|
(Offline)
|
|
07.02.2013, 02:17
|
#1269
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
А где, собственно, компонент Animation? Вы его ищете на детях, а где он на детях?- нет его...
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.02.2013, 03:27
|
#1270
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Анимацию на объекте вообще искать не надо. Просто обращаться к ней через свойство animation.
А никто не делал вертолет? Сделал к точке пропеллера силу
float finalForce = Physics.gravity.magnitude*force;
Vector3 dir = Quaternion.Euler(angles) * mainRotor.transform.up;
rigidbody.AddForceAtPosition(dir*finalForce, mainRotor.transform.position, ForceMode.Acceleration);
angles это небольшой наклон пропеллера. Но если этот наклон будет постоянный, то вертолет переворачивается.
Конечно можно просто вручную контролировать наклон вертолета, но вряд ли что хорошее получится. Да и при столкновении вертолет уже имеет право перевернуться.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.02.2013, 07:19
|
#1271
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от Amatsu
У меня GUI-окна могут в любом порядке перекрывать окно с отрендеренным персонажем
|
А в чем проблема то? Камера выключена, рисуется в том же месте что и GUI.DrawTexture, только вызывается camera.Render(). И не нужна рендертекстура. Я так в GUI рисовал сталкера в интерфейсе (скрины ты видел).
|
(Offline)
|
|
07.02.2013, 09:20
|
#1272
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от pax
А в чем проблема то? Камера выключена, рисуется в том же месте что и GUI.DrawTexture, только вызывается camera.Render(). И не нужна рендертекстура. Я так в GUI рисовал сталкера в интерфейсе (скрины ты видел).
|
Да уже понял, о чем ты. Но решил проблему через RenderTexture. К тому же в твоем случае если окно с отрендеренным персонажем спокойно ездит по экрану - я так понимаю надо и камеру с моделью как-то смещать, чтобы его позиция отрисовывалась всегда в нужной позиции экрана (или я до конца не догнал технологию). С рендертекстурой как-то надежнее - модель и камера всегда в одних координатах, где бы ни находилось нужное GUI-окно
|
(Offline)
|
|
07.02.2013, 09:28
|
#1273
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Я же написал выше что для камеры тоже надо задавать pixelRect как и для GUI.DrawTexture, единственное этот рект отличается немного (инвертирован по высоте на сколько я помню).
|
(Offline)
|
|
07.02.2013, 12:01
|
#1274
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от pax
Я же написал выше что для камеры тоже надо задавать pixelRect как и для GUI.DrawTexture, единственное этот рект отличается немного (инвертирован по высоте на сколько я помню).
|
К слову, попробовал щас влезть в этот iGUI. Я просто гуглил что компонент Image они выводят через GUI.DrawTexture, но на вскидку не нашел, где он вызывается. Надо лезть в их классы, смотреть их пробросы методов. Проще рендертекстурой ограничиться
|
(Offline)
|
|
07.02.2013, 13:13
|
#1275
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка

namespace iGUI
{
using System;
using UnityEngine;
public class iGUIImage : iGUIElement
{
public bool alpha = true;
public float aspectRatio = 0f;
public Texture image;
public ScaleMode scaleMode;
internal override void draw()
{
this.beforeDraw();
if (this.image != null)
{
Color backgroundColor = base.backgroundColor;
backgroundColor.a = GUI.color.a;
GUI.color = backgroundColor;
GUI.DrawTexture(base.rect, this.image, this.scaleMode, this.alpha, this.aspectRatio);
GUI.Label(base.rect, base.label);
GUI.color = base.newColor;
}
base.draw();
}
public override void onCreate()
{
if ((Mathf.Approximately(this.positionAndSize.x, 0.5f) && Mathf.Approximately(this.positionAndSize.y, 0.5f)) && (Mathf.Approximately(this.positionAndSize.width, 0.5f) && Mathf.Approximately(this.positionAndSize.height, 0.5f)))
{
this.positionAndSize.width = 1f;
this.positionAndSize.height = 1f;
}
if (!Application.isPlaying && (this.image == null))
{
this.image = iGUIRoot.getTexture("iGUILogoTransparent");
base.label.text = "";
}
}
}
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:57.
|