Сегодня мы на пальцах рассмотрим столь сложное действо, как запись и примитивный постмастеринг видео.
Записать видео очень просто - достаточно скачать и установить утилиту FRAPS. После установки и запуска в программе настроить параметры видео:
Запись будет вестись при нажатии кнопки «F9» или любой другой, которую назначите. Остановка записи - та же кнопка. Записанные файлы будут в указанной папке.
Теперь, когда у нас есть записанный файл невероятного размера, нужно что-то с ним сделать - обрезать лишнее в картинке, вырезать лишний видеоряд, сжать наконец, чтобы залить на тот же YouTube.
Для этих операций мы возьмем довольно популярный, бесплатный и простой линейный видеоредактор VirtualDub. Скачиваем, распаковываем и запускаем:
Затем открываем в нем наш видеофайл (File -> Open):
Работу над файлом начнем с подготовки картинки, а именно обрезке всего ненужного (окна клиента, сообщений и т.п. «мусора»). Для этого идем в меню «Video» и выбираем пункт «Filters»:
В открывшемся окошке нажимаем кнопку «Add», откроется список доступных фильтров, где нужно найти и выбрать «Null transform». Это «пустой» фильтр, который не делает с изображением ровным счетом ничего, но нужен нам, чтобы обрезать картинку:
Выбрав фильтр, нажимаем на кнопку «Cropping» и в открывшемся окне настраиваем поля кадрирования, которые будут вырезаны при процессинге ролика:
Настроив кадрирование, опять нажимаем кнопку «Add» и выбираем фильтр «Resize». Этот фильтр позволит нам уменьшить изображение, заодно и поместить в «стандартный» кадр. Я выбираю обычно размер 640х480, чего вполне хватает для видеохостингов. Тут вы сами определите для себя, какого размера вам нужен результирующий кадр:
Настроив фильтры, настроим параметры кодирования (сжатия) видео. Идем в тот же пункт меню «Video», убеждаемся, что пункт «Full processing mode» активен (если нет - включите) и выбираем «Compression»:
Откроется окно выбора кодеков, для простоты можно брать стандартный кодек от «Microsoft», он хорошо известен обработчикам видеохостингов. Если нужно, измените параметры кодирования, но можно все оставить, как есть, это на сегодня не слишком принципиально. Скажу только, что чем больше параметр «Data Rate», тем видео кодируется более тщательно, но и размер результирующего файла также возрастает:
Далее в меню «Audio» устанавливаем «Full processing mode», нажимаем «Compression»:
Выбираем звуковой кодек - здесь я тоже беру стандартный «Lame MP3» и настраиваем его параметры. Качества 128 кбит/c вполне хватит для нашего видео:
Теперь осталось подредактировать сам видеоряд, вырезав ненужное. Для этого существуют специальные маркеры (стрелочки). Ставите курсор на то место, откуда резать, жмете стрелку, смотрящую влево, затем на то место, до куда резать, жмете стрелку, смотрящую вправо. Кусок таймлайна выделится и обыкновенной кнопкой «Del» его можно удалить:
Все, можно запускать процессинг и ждать результатов. Идем в меню «File» и выбираем «Save». Появится окно с информацией о ходе процессинга и когда оно автоматически закроется, ваш файл готов. В окне можно посмотреть ожидаемый размер видеофайла, который получится в результате и много другой полезной информации, о назначении которой вы можете поинтересоваться самостоятельно:
К слову сказать, этот видеоредактор обладает куда большими возможностями, чем понадобилось нам в рамках этой статьи, но это уже совершенно другая история.
вторник, 5 июля 2011 г.
воскресенье, 27 марта 2011 г.
[SLifeHack] Лечим душную жабу
Часто бывает так: приходишь куда-нибудь, включаешь местное радио (медиа), а там играет нечто приятное, слух ублажающее и душу бередящее. И хочется, ох как хочется узнать, что же это такое играет, какое радио, откуда берется, но... Злой и противный аватар, хозяин земли, подло скрыл ссылку на поток, чтобы никому не досталось, чтобы приходили к нему и только к нему слушать и наслаждаться.
Наверняка же каждый бывал в подобной ситуации, не так ли?
К счастью, по недосмотру или умыслу какому программистов «Linden Lab» есть возможность восстановить попранную справедливость и узнать-таки вожделенный адрес столь волнующего радио. Я даже предложу вам пару способов на выбор - простой и, если он по какой-либо причине не сработает, чуть более сложный, самую малость.
Итак, открываем свойства земли, свойства аудио и - видим знакомую картину.
Теперь берем и нажимаем секретную комбинацию клавиш: Ctrl-Alt-V. Прошу обратить внимание, что эта комбинация сработает только в том случае, если у вас включено advanced-menu¹ (это видно по верхнему меню клиента, там должен быть пункт «Advanced»). Рядом должен появиться пункт «Admin» - значит, все получилось и можно открыть снова свойства земли, вкладку аудио и скопировать открывшийся URL аудиопотока себе.
Вообще включение отображения административных функций клиента даёт ряд дополнительных возможностей, но об этом как-нибудь в другой раз. Если вдруг решите поисследовать их самостоятельно, сразу хочу предупредить, что очень большое количество вновь открывшихся функций работать не будут - для этого нужно иметь фамилию Linden или, на худой конец, быть симовладельцем.
Если по какой-то причине фокус с админскими опциями у вас не получился (может быть, клиент так себя повел, вмешалась третья липовая сила или инопланетяне из космоса хорошо защитили свой аудиопоток от любопытных читателей моего блога - всякое может случиться), то есть немного более сложный способ получить желаемое. Для этого служит другая комбинация клавиш, не менее волшебная.
Жмём Ctrl-Shift-4 и на экране появляется окошко, чуть более, чем полностью набитое чудовищной абракадаброй, которая с приличной скоростью проносится перед глазами.
Теперь не зевайте - тыкайте мышом в кнопку запуска проигрывания музыки и сразу ищите строчки, похожие на те, что я заботливо выделил для вас приятной глазу зелёной рамочкой. Это и есть адрес искомого радиопотока. Скопировать, к сожалению, адрес не удастся, поэтому придется быстренько его куда-нибудь переписать вручную.
Все, теперь можно той же комбинацией клавиш отключить это пугающее окно, вернув экран в привычный глазу вид, глубоко вздохнуть и использовать полученный адрес по своему усмотрению. Я, к примеру, скармливаю их известному плееру. Кстати, звучат там радиопотоки не в пример лучше.
Listen and enjoy!
—
¹ Advanced-menu в большинстве клиентов включается комбинацией клавиш Ctrl-Shift-Alt-D
Наверняка же каждый бывал в подобной ситуации, не так ли?
К счастью, по недосмотру или умыслу какому программистов «Linden Lab» есть возможность восстановить попранную справедливость и узнать-таки вожделенный адрес столь волнующего радио. Я даже предложу вам пару способов на выбор - простой и, если он по какой-либо причине не сработает, чуть более сложный, самую малость.
Итак, открываем свойства земли, свойства аудио и - видим знакомую картину.
Теперь берем и нажимаем секретную комбинацию клавиш: Ctrl-Alt-V. Прошу обратить внимание, что эта комбинация сработает только в том случае, если у вас включено advanced-menu¹ (это видно по верхнему меню клиента, там должен быть пункт «Advanced»). Рядом должен появиться пункт «Admin» - значит, все получилось и можно открыть снова свойства земли, вкладку аудио и скопировать открывшийся URL аудиопотока себе.
Вообще включение отображения административных функций клиента даёт ряд дополнительных возможностей, но об этом как-нибудь в другой раз. Если вдруг решите поисследовать их самостоятельно, сразу хочу предупредить, что очень большое количество вновь открывшихся функций работать не будут - для этого нужно иметь фамилию Linden или, на худой конец, быть симовладельцем.
Если по какой-то причине фокус с админскими опциями у вас не получился (может быть, клиент так себя повел, вмешалась третья липовая сила или инопланетяне из космоса хорошо защитили свой аудиопоток от любопытных читателей моего блога - всякое может случиться), то есть немного более сложный способ получить желаемое. Для этого служит другая комбинация клавиш, не менее волшебная.
Жмём Ctrl-Shift-4 и на экране появляется окошко, чуть более, чем полностью набитое чудовищной абракадаброй, которая с приличной скоростью проносится перед глазами.
Теперь не зевайте - тыкайте мышом в кнопку запуска проигрывания музыки и сразу ищите строчки, похожие на те, что я заботливо выделил для вас приятной глазу зелёной рамочкой. Это и есть адрес искомого радиопотока. Скопировать, к сожалению, адрес не удастся, поэтому придется быстренько его куда-нибудь переписать вручную.
Все, теперь можно той же комбинацией клавиш отключить это пугающее окно, вернув экран в привычный глазу вид, глубоко вздохнуть и использовать полученный адрес по своему усмотрению. Я, к примеру, скармливаю их известному плееру. Кстати, звучат там радиопотоки не в пример лучше.
Listen and enjoy!
—
¹ Advanced-menu в большинстве клиентов включается комбинацией клавиш Ctrl-Shift-Alt-D
суббота, 26 марта 2011 г.
Разбираем старый хлам (скрипт-кладовщик)
Вы давно вдумчиво заглядывали в свой инвентарь?
Я периодически заглядываю и ужас меня берет ледяными пальцами за самое естество. Ведь чем больше объектов лежит у нас в инвентаре, тем большие лаги это вызывает. Почему так происходит, позвольте не объяснять в рамках данной статьи - это отдельная «наука» о хранении предметов в SL в принципе... Сегодня мы просто попытаемся как-то систематизировать и даже заархивировать то барахло, которое нам жалко выбросить, но и место оно занимает, собирая виртуальную пыль.
Ни для кого не секрет, что можно создать банальный кубик и в его инвентарь напихать довольно много всяческих причиндалов: скины, текстуры, скрипты и т.п. В общем все, что может лежать в инвентаре, может быть сохранено в кубике. Таким образом, имея некоторое количество предметов в инвентаре, можно заменить их на один, поместив их все в его инвентарь.
Допустим, мы разложили это все по кубикам и у нас полный порядок в этом вопросе. Но как потом разобраться, по прошествии времени, что где лежит, в каком количестве? Да, конечно, мы будем называть наши кубики-коробки должным образом, но это зачастую малоинформативно по той простой причине, что приходится сильно обобщать.
Например, ящик с оружием, который называется... «Weapons». Внезапно, не правда ли? ;) Или вот они, коробочки наши, стоят, а где и что - нужно нажать Ctrl-3, ткнуть каждую мышом, чтобы хотя бы прочитать, как они называются.
Давайте упростим себе жизнь, используя скрипты - кровь этого нарисованного мира.
Итак, что же должен уметь наш скрипт? Как минимум, он должен уметь:
Для этого нам в основном понадобятся следующие функции встроенного скриптового языка LSL:
Конечно, я буду использовать в примере несколько большее количество функций, но это скорее для эстетики, можно обойтись и без них, упростив отдельные конструкции.
Итак, сделаем для начала, чтобы наша коробочка могла при помощи всплывающего текста обозначать своё название. Для этого определяем пользовательскую функцию setName() и будем потом её вызывать, когда нам понадобится изменить надпись.
Теперь нужно научить нашу коробку подсчитывать, какое количество объектов есть у нее в инвентаре, а также следить за тем, не изменилось ли их количество, ну и сообщать нам при помощи всё того же всплывающего текста. Для этого мы несколько модернизируем нашу функцию.
Обратите внимание - мы вычитаем из содержимого переменной objNum единичку. Это сделано для того, чтобы корректно отображать количество инвентаря, ведь наш управляющий скрипт по сути также является объектом инвентаря, но как бы «не считается».
Если мы что-то добавляем или удаляем из инвентаря объекта, то происходит событие changed(), которым мы воспользуемся для вызова нашей пользовательской функции и пересчета количества содержимого инвентаря.
Для проверки добавим в инвентарь нашей коробки какой-нибудь объект, произойдет событие, которое вызовет определённую ранее функцию и она отобразит корректные данные. Хочу обратить внимание на то, что возвращаемое событием число является битовым полем, из которого при помощи оператора ветвления мы вычисляем бит нужного нам события - изменения инвентаря.
К сожалению, нет события, которое бы отслеживало изменение такого параметра, как смена имени объекта. Но мы обойдем это ограничение, что называется, «малой кровью» - не важно, когда изменилось имя, важно, чтобы при следующем доставании этой коробки имя отображалось корректно.
Для этого воспользуемся событием on_rez(), возникающим всегда, когда вы что-то достаёте из своего «кармана» и кладете на землю. Нужно лишь просто при возникновении этого события еще раз вызвать нашу функцию setName() ;)
Иными словами, вы меняете название коробки в её свойствах, кладёте ее «в карман», а когда в следующий раз достанете, то подписана она будет уже тем именем, которое вы ей дали.
Ну вот, нам осталась самая малось - научить коробку сообщать выдавать список своего содержимого и распаковываться автоматически красивой папочкой. Сделать это можно разными способами, но мы сделаем это красиво при помощи милого голубого меню, хорошо знакомого всем аватарам.
Мы использовали событие touch(), возникающее каждый раз, когда кто-то ткнет мышом в объект. Из данных, возвращаемых этим событием мы получаем ключ кликнувшего аватара и сравниваем с ключем владельца коробки. Если все совпадает, выдаем владельцу менюшку.
И здесь хочу обратить внимание на конструкцию с использованием события timer(). При вызове меню мы инициализируем обратный отсчет времени, равный 30 секундам и начинаем слушать канал чата. Когда 30 секунд истекают, мы сообщаем об этом владельцу коробки и перестаем слушать чат. Делается это для того, чтобы снизить нагрузку на сим и, как следствие, уменьшить лаги, которых и без того хватает в избытке от гламурных кис с их АО'шками и любителей всевозможных псевдозащитных гаджетов.
Ещё один немаловажный момент - переменные, содержащие номер канала и его идентификатор должны быть определены, как глобальные, поскольку используются в разных местах скрипта и не должны потерять своих значений.
И вот она, финишная прямая - осталось дописать обработчики кнопок меню. Начнем с выдачи списка предметов. Для этого определим еще одну функцию, которую назовем... Да чего мудрствовать лукаво, мы же не Ed7v Resident с его cunt'овской философией - пусть функция называется listInventory().
Мы также не включаем в список содержимого коробки наш управляющий скрипт, кроме того, эта функция уже не тихо сама с собою что-то делает, а имеет тип и возвращает значение в соответствии со своим типом, в данном случае массив со списком.
Возвращаемся к обработчику меню - здесь нам поможет событие listen(), происходящее каждый раз, когда кто-то или что-то говорит в чат, причем, без разницы, на каком канале. При условии, что мы вообще слушаем чат (а мы его слушаем 30 секунд после вызова меню, помним об этом).
Послушали, поняли, что говорят нам и говорит тот, кого нужно слушать, распознали, какую кнопку нажали и - ответили нужным действием, пока что прочитали в приват владельцу коробки её содержимое. Вообще давать служебную информацию в личку владедельцу - правило хорошего тона. Когда объекты загаживают чат флудом есть путь неверный и ведет на тёмную сторону Силы, помните об этом.
Всё, играем коду, выходим на прямой - обрабатываем распаковку в красивую папочку буквально одной волшебной функцией.
И вуаля! Содержимое коробки у нас снова в инвентаре целиком и полностью, за исключением управляющего скрипта.
Вот, собственно, всё, что я хотел сегодня показать и рассказать. Описанный скрипт же можно изготовить самостоятельно, руководствуясь этой статьёй, либо приобрести всего за L$50 на маркетплейсе, ибо вещь полезная и в хозяйстве сгодится если не любому, то каждому.
Я периодически заглядываю и ужас меня берет ледяными пальцами за самое естество. Ведь чем больше объектов лежит у нас в инвентаре, тем большие лаги это вызывает. Почему так происходит, позвольте не объяснять в рамках данной статьи - это отдельная «наука» о хранении предметов в SL в принципе... Сегодня мы просто попытаемся как-то систематизировать и даже заархивировать то барахло, которое нам жалко выбросить, но и место оно занимает, собирая виртуальную пыль.
Ни для кого не секрет, что можно создать банальный кубик и в его инвентарь напихать довольно много всяческих причиндалов: скины, текстуры, скрипты и т.п. В общем все, что может лежать в инвентаре, может быть сохранено в кубике. Таким образом, имея некоторое количество предметов в инвентаре, можно заменить их на один, поместив их все в его инвентарь.
Допустим, мы разложили это все по кубикам и у нас полный порядок в этом вопросе. Но как потом разобраться, по прошествии времени, что где лежит, в каком количестве? Да, конечно, мы будем называть наши кубики-коробки должным образом, но это зачастую малоинформативно по той простой причине, что приходится сильно обобщать.
Например, ящик с оружием, который называется... «Weapons». Внезапно, не правда ли? ;) Или вот они, коробочки наши, стоят, а где и что - нужно нажать Ctrl-3, ткнуть каждую мышом, чтобы хотя бы прочитать, как они называются.
Давайте упростим себе жизнь, используя скрипты - кровь этого нарисованного мира.
Итак, что же должен уметь наш скрипт? Как минимум, он должен уметь:
- Динамически отображать название коробки in-world
- Динамически же отображать количество содержимого
- Выдавать список своего содержимого владельцу
- Самостоятельно распаковываться в инвентарь в случае необходимости
Для этого нам в основном понадобятся следующие функции встроенного скриптового языка LSL:
- llSetText()
- llGetObjectName()
- llGetInventoryNumber()
- llDialog()
- llListen()
- llListenRemove()
- llSetTimerEvent()
- llDetectedKey()
- llGetOwner()
- llOwnerSay()
- llGetScriptName()
- llGiveInventoryList()
Конечно, я буду использовать в примере несколько большее количество функций, но это скорее для эстетики, можно обойтись и без них, упростив отдельные конструкции.
Итак, сделаем для начала, чтобы наша коробочка могла при помощи всплывающего текста обозначать своё название. Для этого определяем пользовательскую функцию setName() и будем потом её вызывать, когда нам понадобится изменить надпись.
Теперь нужно научить нашу коробку подсчитывать, какое количество объектов есть у нее в инвентаре, а также следить за тем, не изменилось ли их количество, ну и сообщать нам при помощи всё того же всплывающего текста. Для этого мы несколько модернизируем нашу функцию.
Обратите внимание - мы вычитаем из содержимого переменной objNum единичку. Это сделано для того, чтобы корректно отображать количество инвентаря, ведь наш управляющий скрипт по сути также является объектом инвентаря, но как бы «не считается».
Если мы что-то добавляем или удаляем из инвентаря объекта, то происходит событие changed(), которым мы воспользуемся для вызова нашей пользовательской функции и пересчета количества содержимого инвентаря.
Для проверки добавим в инвентарь нашей коробки какой-нибудь объект, произойдет событие, которое вызовет определённую ранее функцию и она отобразит корректные данные. Хочу обратить внимание на то, что возвращаемое событием число является битовым полем, из которого при помощи оператора ветвления мы вычисляем бит нужного нам события - изменения инвентаря.
К сожалению, нет события, которое бы отслеживало изменение такого параметра, как смена имени объекта. Но мы обойдем это ограничение, что называется, «малой кровью» - не важно, когда изменилось имя, важно, чтобы при следующем доставании этой коробки имя отображалось корректно.
Для этого воспользуемся событием on_rez(), возникающим всегда, когда вы что-то достаёте из своего «кармана» и кладете на землю. Нужно лишь просто при возникновении этого события еще раз вызвать нашу функцию setName() ;)
Иными словами, вы меняете название коробки в её свойствах, кладёте ее «в карман», а когда в следующий раз достанете, то подписана она будет уже тем именем, которое вы ей дали.
Ну вот, нам осталась самая малось - научить коробку сообщать выдавать список своего содержимого и распаковываться автоматически красивой папочкой. Сделать это можно разными способами, но мы сделаем это красиво при помощи милого голубого меню, хорошо знакомого всем аватарам.
Мы использовали событие touch(), возникающее каждый раз, когда кто-то ткнет мышом в объект. Из данных, возвращаемых этим событием мы получаем ключ кликнувшего аватара и сравниваем с ключем владельца коробки. Если все совпадает, выдаем владельцу менюшку.
И здесь хочу обратить внимание на конструкцию с использованием события timer(). При вызове меню мы инициализируем обратный отсчет времени, равный 30 секундам и начинаем слушать канал чата. Когда 30 секунд истекают, мы сообщаем об этом владельцу коробки и перестаем слушать чат. Делается это для того, чтобы снизить нагрузку на сим и, как следствие, уменьшить лаги, которых и без того хватает в избытке от гламурных кис с их АО'шками и любителей всевозможных псевдозащитных гаджетов.
Ещё один немаловажный момент - переменные, содержащие номер канала и его идентификатор должны быть определены, как глобальные, поскольку используются в разных местах скрипта и не должны потерять своих значений.
И вот она, финишная прямая - осталось дописать обработчики кнопок меню. Начнем с выдачи списка предметов. Для этого определим еще одну функцию, которую назовем... Да чего мудрствовать лукаво, мы же не Ed7v Resident с его cunt'овской философией - пусть функция называется listInventory().
Мы также не включаем в список содержимого коробки наш управляющий скрипт, кроме того, эта функция уже не тихо сама с собою что-то делает, а имеет тип и возвращает значение в соответствии со своим типом, в данном случае массив со списком.
Возвращаемся к обработчику меню - здесь нам поможет событие listen(), происходящее каждый раз, когда кто-то или что-то говорит в чат, причем, без разницы, на каком канале. При условии, что мы вообще слушаем чат (а мы его слушаем 30 секунд после вызова меню, помним об этом).
Послушали, поняли, что говорят нам и говорит тот, кого нужно слушать, распознали, какую кнопку нажали и - ответили нужным действием, пока что прочитали в приват владельцу коробки её содержимое. Вообще давать служебную информацию в личку владедельцу - правило хорошего тона. Когда объекты загаживают чат флудом есть путь неверный и ведет на тёмную сторону Силы, помните об этом.
Всё, играем коду, выходим на прямой - обрабатываем распаковку в красивую папочку буквально одной волшебной функцией.
И вуаля! Содержимое коробки у нас снова в инвентаре целиком и полностью, за исключением управляющего скрипта.
Вот, собственно, всё, что я хотел сегодня показать и рассказать. Описанный скрипт же можно изготовить самостоятельно, руководствуясь этой статьёй, либо приобрести всего за L$50 на маркетплейсе, ибо вещь полезная и в хозяйстве сгодится если не любому, то каждому.
воскресенье, 30 ноября 2008 г.
Артикуляция при общении голосом
Многие давно мечтают о том, чтобы во время общения голосом аватар шевелил губами, верно?
Нет ничего проще, потому что LL заложил такой функционал в нынешние версии клиента выше 1.20. Для того, чтобы включить эту функцию, нужно проделать несколько несложных действий:

Однако, следует помнить о том, что если у других эта функция не включена, они не будут видеть, что у вас что-то шевелится. И такое положение вещей будет сохраняться до тех пор, пока эту фичу не выведут в обязательный функционал. Также предмет, приаттаченный к челюсти, не будет двигаться вовсе, поэтому фуррикам наврядли пригодится эта функция.
Демо от Торли Линдена:
Нет ничего проще, потому что LL заложил такой функционал в нынешние версии клиента выше 1.20. Для того, чтобы включить эту функцию, нужно проделать несколько несложных действий:
- Войти в расширенное меню "Advanced". Если у вас его нет, включите комбинацией клавиш Ctrl-Shift-Alt-D.
- В этом меню выбрать пункт "Charaсter".
- А уже в нем ставим галку "Enable Lip Sync (beta)".

Однако, следует помнить о том, что если у других эта функция не включена, они не будут видеть, что у вас что-то шевелится. И такое положение вещей будет сохраняться до тех пор, пока эту фичу не выведут в обязательный функционал. Также предмет, приаттаченный к челюсти, не будет двигаться вовсе, поэтому фуррикам наврядли пригодится эта функция.
Демо от Торли Линдена:
Ярлыки:
lipsync,
voice,
артикуляция,
войс,
губы,
шевелит губами
пятница, 21 ноября 2008 г.
Время московское и время SL.
Время в SL соответствует тихоокеанскому времени, т.е. времени Linden Lab. Для того, чтобы перевести его в привычное нам московское время, необходимо проделать несложные арифметические вычисления.
Разница между московским временем и временем SL составляет 11 часов. АМ - это первая половина дня, РМ - после полудня, вторая половина дня
Если Вы видите объявление, где указано время 5 AM SLT (5 утра) - то нужно прибавить 11 часов и получим 16:00 московского времени, потому что 5 + 11 = 16.
Если 5 РМ SLT (5 вечера), то сначала переводим 5 РМ в понятные нам 17:00, прибавляем 11 и если полученное число больше 24, то вычитаем из него 24.
Таким образом получаем 4-00 по московскому времени, так как 5 -> 17 + 11 = 28, а, поскольку, 28 > 24, то 28 - 24 = 4.
© Ivus Forager
Разница между московским временем и временем SL составляет 11 часов. АМ - это первая половина дня, РМ - после полудня, вторая половина дня
Если Вы видите объявление, где указано время 5 AM SLT (5 утра) - то нужно прибавить 11 часов и получим 16:00 московского времени, потому что 5 + 11 = 16.
Если 5 РМ SLT (5 вечера), то сначала переводим 5 РМ в понятные нам 17:00, прибавляем 11 и если полученное число больше 24, то вычитаем из него 24.
Таким образом получаем 4-00 по московскому времени, так как 5 -> 17 + 11 = 28, а, поскольку, 28 > 24, то 28 - 24 = 4.
© Ivus Forager
среда, 19 ноября 2008 г.
Как отключить анимацию печатания и звук
Многие меня спрашивают, в том числе и те, кто презрительно кривится при слове "нуб", как же отключить дефолтную анимацию печатания и убрать звук нажимаемых клавиш. Не знаю, насколько они и правда идиотские, мне лично нравится. Но у каждого свои шурупы, так что рассказываю и показываю, как это делается, все банально просто.
- Заходим в меню "Advanced" (Ctrl-Alt-Shift-D, если нет такого);
- Находим и выбираем "Debug Settings";
- В открывшемся окошке пишем PlayTypingAnim (там автозаполнение, неправильно ввести не даст);
- Установить значение в FALSE;
Ярлыки:
анимация,
настройки,
отключение,
печатание
воскресенье, 9 ноября 2008 г.
Сам себе портной. Принципы изготовления одежды.
Как сделать одежду для своего автара в Second Life? Прочитав эту статью, вы поймете, что все это очень просто.

Вам понадобятся графический редактор с поддержкой слоев, например, Adobe Photoshop, и шаблоны одежды, которые можно взять, скажем, тут. Из них нам будут нужны те файлы, которые называются layered Photoshop (.psd) Files, а конкретно Top и Bottom – для создания рубашки и штанов.
Итак, откроем файл Top в графическом редакторе. Создадим новый слой, с которым и будем работать.

Теперь выделим инструментом "Многоугольное лассо" (обведено на рисунке красным) необходимую область шаблона. И зальем ее цветом с помощью инструмента "Заливка" (обведено желтым).
То, как вы выделите шаблон, прямым образом влияет на вид будущей одежды. В моем варианте, например, обрезан верх и рукава наполовину.

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

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

Теперь нужно сделать альфа-канал. Для этого уберем видимость у всех слоев шаблона, кроме созданного. Это легко сделать, нажимая на картинку глаза слева от названия слоя.

После этого кликнем правой кнопкой мышки на изображение нужного слоя и выберем опцию "Выделить прозрачность слоя".
Теперь переключимся на вкладку "Каналы" и создадим новый канал из выделения.

Теперь можно сохранять файл в формате tga.

Что ж, пора загружать рубашку в Second Life. Переключаемся на SL-клиент, нажимаем в верхнем левом углу "File" и "Upload Image" (не забывайте, что загрузка стоит 10 линденов).

Выбираем нужный файл и тип, в данном случае это "Male Upper Body" – клиент покажет вам, как это будет выглядеть.
После загрузки текстуры используем ее на рубашку. Для этого переключаемся в режим "Edit Appearance" и нажимаем "Create new shirt".

В окошке "Fabric" выбираем загруженную текстуру.

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

Снова переходим в графический редактор и открываем текстуру Bottom.
Кроме шаблона штанов, здесь же находится и шаблон носков. Но его мы сейчас не трогаем.

Так же, как мы "кроили" и раскрашивали рубашку, создаем вид штанов и рисунок на них.

Далее создаем альфа-канал описанным выше способом, сохраняем файл в формате tga и загружаем в Second Life.

И вот что получилось в результате.

Вид одежды, конечно, с трудом тянет на freebie, но и узоры были использованы мной очень простые.
Вся одежда, которую носят аватары в Second Life, делается именно описанным мною путем, так что используйте вашу фантазию и умения, и результат будет удивительным!
© Furry Little
SOb Zemlja:
Можно просматривать. Для этого есть SL Clothes Previewer.

Позволяет просматривать текстуры на аватаре вообще не запуская SL.
Скачать можно тут.

Вам понадобятся графический редактор с поддержкой слоев, например, Adobe Photoshop, и шаблоны одежды, которые можно взять, скажем, тут. Из них нам будут нужны те файлы, которые называются layered Photoshop (.psd) Files, а конкретно Top и Bottom – для создания рубашки и штанов.
Итак, откроем файл Top в графическом редакторе. Создадим новый слой, с которым и будем работать.

Теперь выделим инструментом "Многоугольное лассо" (обведено на рисунке красным) необходимую область шаблона. И зальем ее цветом с помощью инструмента "Заливка" (обведено желтым).
То, как вы выделите шаблон, прямым образом влияет на вид будущей одежды. В моем варианте, например, обрезан верх и рукава наполовину.

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

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

Теперь нужно сделать альфа-канал. Для этого уберем видимость у всех слоев шаблона, кроме созданного. Это легко сделать, нажимая на картинку глаза слева от названия слоя.

После этого кликнем правой кнопкой мышки на изображение нужного слоя и выберем опцию "Выделить прозрачность слоя".
Теперь переключимся на вкладку "Каналы" и создадим новый канал из выделения.

Теперь можно сохранять файл в формате tga.

Что ж, пора загружать рубашку в Second Life. Переключаемся на SL-клиент, нажимаем в верхнем левом углу "File" и "Upload Image" (не забывайте, что загрузка стоит 10 линденов).

Выбираем нужный файл и тип, в данном случае это "Male Upper Body" – клиент покажет вам, как это будет выглядеть.
После загрузки текстуры используем ее на рубашку. Для этого переключаемся в режим "Edit Appearance" и нажимаем "Create new shirt".

В окошке "Fabric" выбираем загруженную текстуру.

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

Снова переходим в графический редактор и открываем текстуру Bottom.
Кроме шаблона штанов, здесь же находится и шаблон носков. Но его мы сейчас не трогаем.

Так же, как мы "кроили" и раскрашивали рубашку, создаем вид штанов и рисунок на них.

Далее создаем альфа-канал описанным выше способом, сохраняем файл в формате tga и загружаем в Second Life.

И вот что получилось в результате.

Вид одежды, конечно, с трудом тянет на freebie, но и узоры были использованы мной очень простые.
Вся одежда, которую носят аватары в Second Life, делается именно описанным мною путем, так что используйте вашу фантазию и умения, и результат будет удивительным!
© Furry Little
SOb Zemlja:
Можно просматривать. Для этого есть SL Clothes Previewer.

Позволяет просматривать текстуры на аватаре вообще не запуская SL.
Скачать можно тут.
Ярлыки:
sl clothes previewer,
изготовление,
одежда,
принципы
Подписаться на:
Сообщения (Atom)


























