Ребята, такая ситуация. На Plane генерируется остров, которому программно присваивается текстура с зарисованными областями (биомы). Издали получается вот такое чудо
Если приблизить, то видны пиксели
Я так понимаю стоит не делать с помощью текстуры, а каждый биом генерировать отдельным мешем? Или же есть какие то другие варианты?
Я не знаю что такое это все но ... может размер текстурки нужно сделать больше, хотя мне кажется что дело и в текстурке и в том что краситься по треугольникам и получаются ступеньки. Наверное мешем генерить лучше отдельно
Ошибка была в том что на 3d меш пытался наложить текстуру. Текстура была привязана к пикселям, а меш к uint. Переделал под спрайт, стало получше, но возникла проблема что текстуру размером 10к на 10к пикселей Unity не может отрисовать. Думаю тут придется отрисовывать определенные секции текстуры в зависимости от того где находится камера.
Assasin, текстура 10к на 10к - да ты просто бог оптимизации. Еще небось RGBA8888 использовал)
Юзай одну затайленную, в чем проблема? Максимум 1к будет уже хорошо смотреться.
Кстати, то что на скринах выше - нафига такому вообще текстура? Отрисовывать просто по точкам треугольники вообще не катит? Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы. Как правильно задавать вопросы в технических форумах
Tymonr, я только взялся за Unity и совсем не знаю как делать правильно. Подумал что спрайт на котором рисуется текстура это и будет островом, по которому в дальнейшем будет передвигаться персонаж и на нем будут различные объекты в виде деревьев.
ЦитатаTymonr ()
Кстати, то что на скринах выше - нафига такому вообще текстура? Отрисовывать просто по точкам треугольники вообще не катит?
Можешь подробнее описать что ты имеешь в виду или ссылку на инфу скинуть? Я не могу понять как без помощи текстуры отрисовывать по точкам.
Можно скрин с настройками текстуры ? 10к и больше текстуры вроде только DirectX 11 поддерживает (хотя могу ошибаться) Если нужны очень большие текстуры то используй Sparse Textures Хотя в твоем варианте скорей всего настройки виноваты. как в фотошопе текстура выглядит, может ты просто с разрешением что то намудрил ?
beril, Текстура создается программно. Есть массив точек по которым нужно отрисовать полигоны (на карте это биомы разных цветов). Механизм генерации хорошо описан в данной статье
Код создающий текстуру
Код
public void AttachTexture(Map map) { _textureScale = Map.textureScale; int _textureWidth = (int)Map.Width * _textureScale; int _textureHeight = (int)Map.Height * _textureScale;
Texture2D texture = new Texture2D(_textureWidth, _textureHeight); texture.SetPixels(Enumerable.Repeat(BiomeProperties.Colors[Biome.Ocean], _textureWidth * _textureHeight).ToArray()); texture.wrapMode = TextureWrapMode.Clamp; texture.filterMode = FilterMode.Trilinear; texture.FillPolygon(new Vector2[] { new Vector2(0f, 0f), new Vector2(_textureWidth, 0f), new Vector2(_textureWidth, _textureHeight), new Vector2(0, _textureHeight) }, BiomeProperties.Colors[Biome.Ocean]);
foreach (var c in map.Graph.centers) { var color = BiomeProperties.Colors[c.biome];
foreach (var n in c.neighbors) { Edge edge = map.Graph.lookupEdgeFromCenter(c, n);
if (map.Graph.noisyEdges.path0.ContainsKey(edge.index) && map.Graph.noisyEdges.path1.ContainsKey(edge.index)) { var path = new List<Vector2>();
path.Add(c.point); var pathZ = map.Graph.noisyEdges.path0[edge.index]; foreach(var p in pathZ) { path.Add(p); } path.Add(c.point);
var pathO = map.Graph.noisyEdges.path1[edge.index]; foreach (var p in pathO) { path.Add(p); } path.Add(c.point);
Assasin, С юнити не знаком только, просто по ссылке в гугле - должго помочь Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы. Как правильно задавать вопросы в технических форумах