نوشته شده توسط
ahrimaneahurai
فقط سوالي که دارم اينه. چرا توي اين برنامه آدم احساس مي کنه تصوير عمق داره در صورتي که از چسبوندن چند تا عکس ساده هست و از چه تکنيکي استفاده شده.
سلام
اين احساس بخاطر عمقي هست که به تصوير داده شده و اونو به حالت فرورفته در آورده که مربوط به همین کنترل Viewport3D میشه و کد زیر هم مهمه
private Geometry3D CreateGeometry()
{
int tDiv = 64;
int yDiv = 64;
double maxTheta = (360.0 / 180.0) * Math.PI;
double minY = -1.0;
double maxY = 1.0;
double dt = maxTheta / tDiv;
double dy = (maxY - minY) / yDiv;
MeshGeometry3D mesh = new MeshGeometry3D();
for(int yi = 0; yi <= yDiv; yi++)
{
double y = minY + yi * dy;
for(int ti = 0; ti <= tDiv; ti++)
{
double t = ti * dt;
mesh.Positions.Add(GetPosition(t, y));
mesh.Normals.Add(GetNormal(t, y));
mesh.TextureCoordinates.Add(GetTextureCoordinate(t , y));
}
}
براي مثال شما بجاي 180 در کد بالا بگذاريد 90 و برنامه رو اجرا کنيد يا بگذاريد 360 و ببينيد به چه شکل عمق تصوير عوض ميشه
ميتونيد minY يا minX رو نصف کنيد و نتيجه رو ببينيد
البته اين نکته قابل ذکره که اين تصاوير با يک دوربين مخصوص گرفته شده که قابليت تصوير برداري همزمان از 360 درجه رو داره و براي همين به خوبي کنار هم قرار ميگيرن
شما نميتونيد بريد و از چند زاويه عکس بگيريد و کنار هم قرار بديد و انتظار داشته باشيد اين شکلي بشه!!
براي قسمت دوم سئوال شما باید محدوده حرکت Camera رو مشخص کنید دوستانی که با 3D در WPF کارکردن بیشتر میتونن کمکتون کنن کدهاش رو باید بررسي کرد و ديد در کدوم قسمت زاويه چرخش تنظيم ميشه