Shader vs Shader Material, специфика papervision, приветствуется общее понимание
Я задал этот вопрос на форуме pv3d, и ни один человек не смог или не захотел на него ответить.
Я относительно новичок в 3D, поэтому прошу прощения, если это здравый смысл для некоторых.
У меня есть сфера, в которой я применяю CellMaterial. Выглядит отлично. Я заметил, что в papervision sdk также есть CellShader.
Должен ли я использовать это в соответствии с CellMaterial? Должно ли это быть одно или другое? Является ли шейдер устаревшей практикой для шейдерного материала?
Мои первые мысли были о том, что шейдер применим ко всей сцене, а материалы можно применять только к объектам.
Документация, кажется, показывает иначе.
Какую выгоду можно получить, если использовать CellShader и CellMaterial? Я действительно люблю, чтобы получить какое-то окружающее включение там как.
1 ответ
Если вам нужен только внешний вид ячейки и ничего больше, CellMaterial - ваш выбор. Цель CellShader состоит в том, чтобы смешать его с BitmapMaterial в ShadedMaterial.
Скажем, вы применили GaraudMaterial и вам понравился внешний вид, но вам также нужна текстура. Это невозможно сделать с помощью GaraudMaterial, но если у вас есть BitmapMaterial и GaraudShader, вы можете создать ShadedMaterial, который использует их.
например
var bitmapMaterial:BitmapMaterial = new BitmapMaterial(yourBitmapData);
var shader:PhongShader = new PhongShader(yourLight,0xFFFFFF, 0x000000,0,yourBumpMap);
//this uses the two above
var shadedMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial,shader);
//apply it to something
var sphere:Sphere = new Sphere(shadedMaterial,250,10,10);
Для более подробного объяснения ознакомьтесь с постом Джима Фоули.
Что касается Ambient Occlusion, самый дешевый способ получить эффект - запечь тени в текстуре. Вы делаете это с помощью выбранного вами трехмерного редактора (3dsmax,maya,blender и т. Д.), И это в основном означает, что свет / тени отображаются в текстуре.
Существует некоторая работа по динамическому продвижению, хотя еще не проверялось ли это в последней версии Papervision.