Как загрузить, отобразить и отобразить 3d модель формата obj, созданную Maya или Blender в iphone с текстурами в формате png или jpg? - PullRequest
0 голосов
/ 13 сентября 2011

Привет, я знаю, что многие веб-парсеры wavefrontobj доступны в сети для загрузки модели .obj, но в основном загружаются без текстур, поэтому мне нужно знать, как мы можем загрузить TEXTURES (.png и .jpg). Также я написал код для масштабирования 3d-модели и для взаимодействия с ней, но она не работает. Так может кто-нибудь помочь мне там справиться с этой проблемой. Любой пример приложения, обладающего всеми вышеуказанными возможностями, будет высоко оценен.

Заранее спасибо ..

Код для масштабирования:

- (void)scale:(id)sender 
{
    if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) 
    {
        lastScale = 1.0;
        return;
    }

    CGFloat prevZoomValue = zoomValue;
    CGFloat scale = (1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]))/10;

    if ([(UIPinchGestureRecognizer*)sender scale] < 1)
    {
        //user is zooming in
        // range 1.0 to 0.0
        zoomValue -= scale;
    }
    else 
    {
        //user is zooming out
        // range > 1.0
        zoomValue += scale/10;
    }

    // if zoom value is not in the range then restore last value
    if (!(zoomValue < -0.1 && zoomValue > -10.0))
    {
        zoomValue = prevZoomValue;
        lastScale = [(UIPinchGestureRecognizer*)sender scale];
    }
}

Код для взаимодействия:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//    NSMutableSet *currentTouches = [[[event touchesForView:self] mutableCopy] autorelease];
//    [currentTouches minusSet:touches];

    secondsInterval = CFAbsoluteTimeGetCurrent();
    //longPressTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(startLongPressCounter) userInfo:nil repeats:YES];

    // New touches are not yet included in the current touches for the view
    lastMovementPosition = [[touches anyObject] locationInView:self];
    rotateX = endMovementPosition.x;
    rotateY = endMovementPosition.y;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    idleRotate = FALSE;

    CGPoint currentMovementPosition = [[touches anyObject] locationInView:self];
    NSLog(@"touchesMoved");

    rotateX = (lastMovementPosition.x - currentMovementPosition.x);
    rotateY = (lastMovementPosition.y - currentMovementPosition.y);

    //[self renderByRotatingAroundX:(lastMovementPosition.x - currentMovementPosition.x) rotatingAroundY:(lastMovementPosition.y - currentMovementPosition.y)];
    lastMovementPosition = currentMovementPosition;
}

1 Ответ

1 голос
/ 13 декабря 2011
NSString *path = [[NSBundle mainBundle] pathForResource:@"cubeimage" ofType:@"jpg"];
OpenGLTexture3D *newTexture = [[OpenGLTexture3D alloc] initWithFilename:path width:512 height:512];
self.texture = newTexture;
[newTexture release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...